番外編第2回 赤坂さん、Flashを攻める!
杉山 俊春
三井物産セキュアディレクション株式会社
テクニカルサービス事業部
コンサルタント
2007/3/9
(Illustrated by はるぷ)
ActionScriptでHTTPヘッダを操作
FlashからHTTPヘッダが操作されたリクエストを送信する際には、Flashが配置されているサーバに対してのみでなく、任意のサーバに対して送信することが可能となる(送信を行うだけであれば、番外編第1回で解説したポリシーファイルの制約を受けない形で行うことが可能である)。図1にその仕組みを示す。
図1 |
ここでは、Flashコンテンツが設置されているサーバを「www.example1.co.jp」とし、HTTPヘッダが操作されたリクエストを受け取るサーバを「www.example2.co.jp」としている。この際に、ユーザーのブラウザから実際にHTTPヘッダが操作されたリクエストが送信される流れとしては以下のようになる。
- ユーザーは「www.example1.co.jp」上に設置されているFlashコンテンツをブラウザで閲覧する
- ブラウザに読み込まれたFlashコンテンツは新しいウィンドウ(ブラウザ)を開く
- 新しく開かれたウィンドウからHTTPヘッダが書き換えられたリクエストが「www.example2.co.jp」に送信される
- 新しく開かれたウィンドウ上にそのレスポンス内容が表示される
第三者によるHTTPヘッダの改ざんを前提にしない場合、例えスクリプトが動作したとしても「攻撃者のブラウザ上でのみ動作する」ため、問題とされない事が多い。しかしFlashを用いた場合、「ユーザーのブラウザ上で動作させる」ことが可能となる。
HTTPヘッダへのスクリプトの挿入に対する処理が正しく行われていない場合は、任意のスクリプトが動作してしまう可能性が存在し、Cookieに格納したセッションIDが奪われ個人情報の漏えいにつながる危険性がある。
req = new LoadVars(); req.addRequestHeader('Test', 'addRequestHeader_test'); req.send('http://www.example2.co.jp/', '_blank', 'POST'); |
リスト1 Testヘッダを挿入するActionScriptの例 (「www.example1.co.jp」上に設置) |
Accept: */* Accept-Language: ja Referer: http://www.example1.co.jp/test.swf Content-Type: application/x-www-form-urlencoded Test: addRequestHeader_test Proxy-Connection: Keep-Alive User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727) Host: www.example2.co.jp Connection: close |
リスト2 Testヘッダが挿入されたリクエスト例 (「www.example2.co.jp」へのリクエスト) |
星野君 | 「こんなのあったんですか、初めて知りました……。Flashを攻撃に使おうなんて考えもしなかったですよ。こんなことできちゃうと、HTTPリクエストヘッダが第三者に操作されてしまうって想定していないアプリケーションは大変なんじゃ……」 |
【注】 HTTPリクエストヘッダが第三者に改ざんされてしまうという問題について、Flashの脆弱性であるとする意見もある。しかし、ApacheのExpectヘッダの脆弱性のように、HTTPリクエストヘッダ操作で発生する問題についても、脆弱性として報告されているケースがある。 本稿では、第三者によるHTTPヘッダの改ざんの是非については触れないが、対応の要否については危険度や影響度によって判断することをお勧めする |
赤坂さん | 「私いままでこれ知らなくてさ、昨日初めて知ったんだよね。……って、あれ? 私のPCだとなんかちょっと挙動が違う。なんか動かないよ」 |
星野君 | 「あれ、ホントだ。赤坂さんのPCだと動かないですね。何でだろ……」 |
赤坂さん | 「家のPCでは動いたんだけどなー」 |
星野君 | 「う〜ん。あ、分かりましたよ。僕のFlashPlayerのバージョンちょっと古いみたいですね。バージョンによってできることが違うんですかね」 |
この挙動の違いは、FlashPlayerのバージョンの違いによるものである。最新版のFlashPlayer(執筆時最新バージョンは9.0.28.0)では、Expectヘッダなどいくつかのヘッダに対しての操作の制限がされている。星野君の利用しているFlashPlayerのバージョンが古いため、Expectヘッダへの操作が有効になっていたのだ。
赤坂さん | 「なるほど……。家のFlashPlayerだと、RefererとかUser-Agentとか普通に操作できたんだけど、新しいのではできないようになってるのか」 |
星野君 | 「バージョンによっては、もともとあるヘッダも操作できちゃったりするんですか。古いバージョンだとしても、それはなんか怖いですね……。FlashPlayerの更新とか結構忘れがちな気がするし」 |
赤坂さん | 「そうだねぇ。ブラウザだけじゃなくて、FlashPlayerみたいなプラグインに関しても時々アップデートチェックをしないとダメだね」 |
FlashPlayerの最新版は、AdobeのWebページ上で確認できる。
2/3 |
Index | |
赤坂さん、Flashを攻める! | |
Page1 Flash、こんな事ができるの?! |
|
Page2 ActionScriptでHTTPヘッダを操作 |
|
Page3 赤坂さん、ダークサイドへ? |
星野君の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)対策の観点から考える。
|
|