番外編第1回 Flashとポリシーファイルの密接なカンケイ
杉山 俊春三井物産セキュアディレクション株式会社
テクニカルサービス事業部
コンサルタント
2007/1/30
Flashとポリシーファイルの関係
Flashでは、「ポリシーファイル」と呼ばれる設定ファイルをサーバ上に設置することで、外部サイトとの連携を行うことが可能になる。このポリシーファイルは、コンテンツを“提供する側”のWebサーバに設置する必要がある。通常は(デフォルトでは)、ドキュメントルートの直下に配置される「crossdomain.xml」というファイルが利用されることとなる。ポリシーファイルでは、読み込みを許可する外部サーバを「domain属性」および「to-ports属性」の2つで制御することとなる。
以下に、ポリシーファイルの例を示す。
<cross-domain-policy> <allow-access-from domain="www.example1.co.jp" to-ports="80" /> </cross-domain-policy> |
このポリシーファイルをサーバ上に設置した場合、「www.example1.co.jp上に設置されたFlashからの、80番ポートへのアクセスを許可する」という設定になる。
このポリシーファイルがドキュメントルートに配置されている場合、Flash側のActionScriptでは、ポリシーファイルを特に意識することなく記述することができる。以下にコンテンツのソースをそのまま取得する例を示す。
var send_lv = new LoadVars(); var load_lv = new LoadVars(); load_lv.onData = function (str) { result = str; }; send_lv.sendAndLoad('http://www.example2.co.jp/test/test.html', load_lv, "GET"); |
ActionScriptで外部コンテンツのソースをそのまま取得する例 |
実際に、Flashから外部サイトのコンテンツを読み込む際には、以下の手順で処理が行われる。ここでは、Flashが設置されているサーバをwww.example1.co.jp、コンテンツを読み込まれる側をwww.example2.co.jpとする。
- ユーザーがブラウザからwwww.example1.co.jp上のFlashを閲覧する
- ブラウザに表示されたFlashは自動的に、「http://www.example2.co.jp/crossdomain.xml」を読み込む
GET /crossdomain.xml HTTP/1.0 Accept: */* x-flash-version: 9,0,28,0 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: Keep-Alive |
実際に送信されるリクエストの例 |
- 読み込まれたcrossdomain.xmlの中身を検証する
- 検証の結果、www.example1.co.jpが許可されている場合のみ、コンテンツを取得することが可能になる
Flashから外部サイトのコンテンツを読み込む手順 |
赤坂さん | 「なるほどねぇ……。そんな仕組みになってるんだ。Flashとか全然縁がなかったから考えたこともなかった」 |
星野君 | 「結構面白いですよ、Flashって。フリーのソフトでも作れるし」 |
赤坂さんは、得意気な星野君を見て、少し不愉快だったのでテスト用のWebサーバの環境を用意し、早速検証をしてみることにした。プログラミングの経験がある赤坂さんにとっては、簡単なActionScriptを組むだけであれば、あまり苦もなく作成することができた。
赤坂さん | (なるほど……。ポリシーファイルがない場合は読み込めないのか) |
いろいろと検証しているうちに、赤坂さんはあることに気が付いた。
ポリシーファイルが情報漏えいのきっかけになる?!
赤坂さん | 「ねえねえ、ちょっと教えて」 |
星野君 | 「何ですか?」 |
赤坂さん | 「さっき教えてもらったポリシーファイルなんだけど、これって大丈夫なの?」 |
星野君 | 「どれですか?」 |
赤坂さんの会社の公開されているWebサーバのポリシーファイルには以下のような記述がなされていた。
<cross-domain-policy> <allow-access-from domain="*" /> </cross-domain-policy> |
すべてのサイトからの読み込みを許可するポリシーファイル |
このような記述の場合、domain属性にワイルドカードが指定されているため、外部サイト上に設置されているすべてのFlashから読み込むことが可能になってしまう。また、to-ports属性がないため、XMLSocketによる1024番ポート以上のポートへの接続(プロトコルによらない)を許してしまうことになり、ユーザーのブラウザ上からポートスキャンを行わせることができてしまうという弊害も存在する。
星野君 | 「んー。あまり好ましくないけど、不特定多数からのアクセスを想定しているようなサイトの場合、そういう設定になってることも多いですよ」 |
赤坂さん | 「ふむ……。これ、うちの会社のWebサーバ上にあるんだけど」 |
星野君 | 「え。それってダメじゃないですかね。取引先からのこっち側へのテスト用に置いたんですかねぇ」 |
赤坂さん | 「うちって一部特定のお客さんに向けて個人情報扱うWebアプリ動いてた気がするけど、それ、読み込まれちゃったりしないの?」 |
Flashから外部サイトへ読み込みを行う際には、通常のブラウザからのアクセスと同様に、Cookie情報も送信される仕組みになっている。そのため、同一サイト上にCookie情報を利用して認証状態を管理しているWebアプリケーションが設置されている場合、認証状態に対応したコンテンツを返してしまうことになる。該当Webアプリケーション上で個人情報を扱っている場合、個人情報の漏えいにつながる危険性がある。
GET /test.jsp HTTP/1.0 Accept: */* Referer: http://www.example1.co.jp/crossdomain.swf x-flash-version: 9,0,28,0 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 Cookie: JSESSIONID=B6B786C92D96E7853ADE44E62D04B68F |
Cookie情報を含んだリクエストの例 (www.example1.co.jpの上のFlashからwww.example2.co.jpのコンテンツを取得) |
星野君 | 「うーん。これだと個人情報の漏えいにつながっちゃうかもしれないですね。domain属性を見直してもらうようにいっておきますね」 |
赤坂さん | 「だねー。……って、あれ? それでもダメじゃない? 取引先からも読み込めちゃダメだし、向こうのサーバが乗っ取られたりしたら巻き添えになるよねぇ」 |
星野君 | 「あれ……。ホントだ、ダメですね。どうすればいいんだろう」 |
赤坂さん | 「どうするんだろうね……。ちょっと調べてみる」 |
赤坂さんは、ポリシーファイルの設定について調べたが、あまり踏み込んだ情報になかなかたどり着くことができなかった。
赤坂さん | (うーん。これは分かんないなぁ……) |
2/3 |
Index | |
Flashとポリシーファイルの密接なカンケイ | |
Page1 Flashで外部サイトとの連携は簡単? |
|
Page2 Flashとポリシーファイルの関係 ポリシーファイルが情報漏えいのきっかけになる?! |
|
Page3 ポリシーファイルの影響を個別ディレクトリに限定する |
星野君のWebアプリほのぼの改造計画 連載インデックス |
- 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)対策の観点から考える。
|
|