番外編最終回 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アプリほのぼの改造計画 連載インデックス |
Security&Trust フォーラム 新着記事
- Windows起動前後にデバイスを守る工夫、ルートキットを防ぐ (2017/7/24)
Windows 10が備える多彩なセキュリティ対策機能を丸ごと理解するには、5つのスタックに分けて順に押さえていくことが早道だ。連載第1回は、Windows起動前の「デバイスの保護」とHyper-Vを用いたセキュリティ構成について紹介する。 - WannaCryがホンダやマクドにも。中学3年生が作ったランサムウェアの正体も話題に (2017/7/11)
2017年6月のセキュリティクラスタでは、「WannaCry」の残り火にやられたホンダや亜種に感染したマクドナルドに注目が集まった他、ランサムウェアを作成して配布した中学3年生、ランサムウェアに降伏してしまった韓国のホスティング企業など、5月に引き続きランサムウェアの話題が席巻していました。 - Recruit-CSIRTがマルウェアの「培養」用に内製した動的解析環境、その目的と工夫とは (2017/7/10)
代表的なマルウェア解析方法を紹介し、自社のみに影響があるマルウェアを「培養」するために構築した動的解析環境について解説する - 侵入されることを前提に考える――内部対策はログ管理から (2017/7/5)
人員リソースや予算の限られた中堅・中小企業にとって、大企業で導入されがちな、過剰に高機能で管理負荷の高いセキュリティ対策を施すのは現実的ではない。本連載では、中堅・中小企業が目指すべきセキュリティ対策の“現実解“を、特に標的型攻撃(APT:Advanced Persistent Threat)対策の観点から考える。
|
|