前の投稿 次の投稿

Flashの脆弱性の見つけ方メモ(簡易版)

Flashの解析はそこまで深くできる訳ではないのですが、オープンリダイレクタ見つけられるくらいの解析はできるようになったので、手順のメモをここに書いておきます。

1. Flashデコンパイラのインストール

Flashの解析に必要なFlashデコンパイラ JPEXS Free Flash Decompilerを下記よりダウンロードしてインストール
http://www.free-decompiler.com/flash/
(要JRE 1.7以上)

※デスクトップのショートカット、もしくはインストールフォルダのffdec.exeを起動して
>Error: Could not create the Java Virtual Machine.
とか出て起動しない場合、インストールフォルダのffdec.batから起動すると起動できる

※Flashのswfを解析することができるデコンパイラは他にもあるが(flareとか)、筆者があまり使ったことがないので省略。

2.検査対象swfを入手してJPEXS Free Flash Decompilerにドラッグドロップ

swfが解析され、script/の下に抽出されたActionScriptがソースごとに表示される

3.FlashVarsを利用している箇所の処理を見る

adobeの公式ヘルプページ
http://helpx.adobe.com/jp/flash/kb/228618.html

ここに書いてあるサンプルコード

<param name="movie" value="myFlashMovie.swf" />
<param name=FlashVars value="myVariable=Hello%20World&mySecondVariable=Goodbye" />

こういうタグをHTML上に書くことで、Flash側へHTMLから値を渡すことができるのだけれど(FlashVarsのvalueがflashに渡されるパラメータ)、このFlashVarsの扱いがswf内でうまくなされていなくて、脆弱性の原因になるケースがある。(外部から任意の値が渡されることを全く考慮していないで重要な処理をしているケースが多い)

外部から値を受け取るswfの場合、解析したswfのActionScriptのどこかに

var temp:String = loaderInfo.parameters["<FlashVars変数名>"];

のような形でHTMLで指定したパラメータの値がActionScript内で利用されている箇所があるはずなので、デコンパイラで抽出したソース上でパラメータ名を検索して見つけ出す。※loaderInfo.parametersを参照する書き方はこれ以外にもあるが、要はFlashVarsの変数名で検索してどう使われるか追っかければ良い。

(JPEXS Free Flash Decompilerの場合、検索はTools->TextSearch。ctrl + fで出てくる検索メニューは別物なので注意)

Flashは、HTML上のタグだけではなく、GETパラメータとして渡された値もFlashVarsとして受け取ってしまうため、swfにパラメータをつけてコールする形にすれば任意のFlashVarsを渡してFlashを動作させることができてしまう。

そのため、例えば、外部から渡された値がノーチェックで

navigateToURL(new URLRequest(<FlashVars由来の値>));

こんな感じで使われていたら、navigateToURLは指定したURLに遷移する関数なので、そこに外部から任意のURLを指定することができるため、オープンリダイレクタ脆弱性を見つけたことになる。

上の例でいくと

http://..../myFlashMovie.swf?<FlashVars変数名>=http://evilsite.test.attack.xx

みたいな形でコールすれば、navigateToURL関数に怪しいURL(http://evilsite.test.attack.xx)を渡して遷移させることができてしまう。


その他、オープンリダイレクタ以外のいろいろな攻撃方法・見るべきポイントについてはmala氏の下記の記事に情報が載っている。

Flash Based XSSについて その2 解析と発見と修正方法(金利0無利息キャッシング – キャッシングできます)
http://subtech.g.hatena.ne.jp/mala/20130604/1370328780

Flashからjsを呼び出すために使う ExtarnalInterface.call() 関数の脆弱性に関してはMasato Kinugawa氏の下記スライドもすごく参考になる。

見つけた脆弱性について(cybozu.com Security Challenge)
http://www.slideshare.net/masatokinugawa/cybozu-security-challenge

Leave a Reply

Powered by Blogger.
© WEB系情報セキュリティ学習メモ Suffusion theme by Sayontan Sinha. Converted by tmwwtw for LiteThemes.com.