番外編最終回 Flash完成! でも最後の仕上げを忘れずに
杉山 俊春
三井物産セキュアディレクション株式会社
テクニカルサービス事業部
コンサルタント
2007/4/13
(Illustrated by はるぷ)
デバッグコードを残すのはFlashでも危険
| 赤坂さん | 「お。変なコード見っけ」 |
| 星野君 | 「え? どれですか?」 |
| 赤坂さん | 「ここ。これ」 |
| 星野君 | 「あ……。それ、デバッグ用に入れてたやつすね。そういえばそのままだったかも……」 |
| var url = 'http://othercompany.example.co.jp/'; if(debugurl){url = debugurl;} //(中略) getURL(url + 'flash.html'); stop(); |
| リスト3 星野君が残していた変なコード |
| 星野君 | 「これ、リンク先を手元の環境にしてテストしてたんですよ。FlashにQueryString渡すとそのまま使えるのでー」 |
星野君が書いたコードでは、
| http://www.example.co.jp/flash_test.swf?debugurl=http://www.example.co.jp |
のようにswfに対しQueryStringを渡すことによって、指定されたURLへアクセスを行うgetURL関数に渡す値を変化させることができる。
| 星野君 | 「まあ、でも、別に害ないからいいんじゃないですかね」 |
| 赤坂さん | 「えー。害あるよー。ほら」 |
赤坂さんはそういうと、この星野君が書いたデバッグコードを利用したクロスサイトスクリプティングを実際にやって見せた。
| 星野君 | 「ええ? あれ……。なんで?」 |
getURL関数では、指定されたURLにアクセスを行うという機能だけでなく、JavaScriptを動作させるという機能も持つ。これは、FlashとJavaScriptの連携を行う際によく使われる。
| getURL('javascript:alert("Javascript test!!")'); |
| リスト4 getURL関数を利用したJavaScript呼び出しの例 |
これを、星野君の作ったデバッグ用のコードに適用すると、以下のようなURLを指定することでJavaScriptが動作することになる【注1】。
| 【注1】 swfに直接アクセスを行う方法では、FireFoxにおいては特に制限は存在しないが、Internet Explorerではdocumentオブジェクトなどにアクセスできないといった制限が存在する。 (動作確認はFireFox2.0.0.3、Internet Explorer 6.0 SP2にて実施) |
| swfに渡すQueryStringの例 http://www.example.co.jp/test.swf?debugurl=javascript:alert(%22xss%22);// ↓ getURL関数に渡される引数getURL('javascript:alert("xss");//' + 'flash.html'); |
| リスト5 クロスサイトスクリプティングの実施例 |

星野君が書いたように、デバッグ用として挿入している場合には、該当のコードを削除してしまえばよいが、削除できない場合も存在するだろう。
getURL関数にQueryStringからの文字列を挿入する場合には、挿入する文字列が、“http:”か“https:”で始まることをチェックする(リスト6)、または、“http:”や“https:”を静的に記述する(リスト7)といった対策が挙げられる。
| if (url.substr(0,5) == "http:" || url.substr(0,6) == "https:") { getURL(url); } |
| リスト6 “http:”か“https:”で始まることをチェックする |
| getURL('http://' + url); |
| リスト7 “http:”を静的に記述する |
このように、getURL関数にQueryStringを挿入するような例としてはFlash広告バナーによるトラッキングが挙げられる。このような仕組みを用いる際にはJavaScriptが動作してしまわないよう十分に注意する必要がある。
| 【参考】 Designer's Guide: Building Macromedia Flash Banners with Tracking Capabilities http://www.adobe.com/resources/richmedia/tracking/designers_guide/ プライバシーとMacromedia Flash広告トラッキング http://www.adobe.com/jp/devnet/security/security_zone/clicktag_security.html |
2/3 |
| Index | |
| Flash完成! でも最後の仕上げを忘れずに | |
| Page1 星野君、Flash完成! 赤坂さんは早速…… |
|
| Page2 デバッグコードを残すのはFlashでも危険 |
|
| Page3 いろいろできるFlashだからこそ |
|
星野君のWebアプリほのぼの改造計画 番外編 バックナンバー
- 第1回 Flashとポリシーファイルの密接なカンケイ
- 第2回 赤坂さん、Flashを攻める!
- 最終回 Flash完成! でも最後の仕上げを忘れずに
| 星野君のWebアプリほのぼの改造計画 連載インデックス |
TechTargetジャパン
Security&Trust フォーラム 新着記事
- Facebook タイムライン利用時の「鉄則」 (2012/2/9)
ユーザーインターフェイスの変更措置に伴い浮上した、Facebookの「過剰な情報提供」のリスクと対策とは - 無料サービスなら通信内容を記録してもいいの? (2012/1/13)
無料の公衆無線LANサービスが、ユーザーに無断で通信履歴を記録していたことが判明し、話題に - 攻撃はまるでレーザービーム (2011/12/26)
2011年に話題となった標的型攻撃は「人」という弱点ををねらい打ちにしました。では、人に教育さえしておけば防げるものなのでしょうか? - 見せたくないなら「持たせない」が鉄則! (2011/12/15)
逆コンパイル対策で難読化したのに、大事なデータが解析されちゃった? Androidアプリのセキュリティの道は深い
|
|
@IT 新着記事
キャリアアップ
スポンサーからのお知らせ
- - PR -
イベントカレンダー
- - PR -
お勧め求人情報
転職/派遣情報を探す
**先週の人気講座ランキング**
〜 Android編 〜
ホワイトペーパー(TechTargetジャパン)
ソリューションFLASH
