WEB系情報セキュリティ学習メモ

WEB系の情報セキュリティ関連の学習メモです。メモなので他情報のポインタだけ、とかの卑怯な記事もあります。




AD
 

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


Edit Category セキュリティ学習
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

Older Entry脆弱性の見つけ方(初心者向け脆弱性検査入門)

Comments



 
07 2014
SUN MON TUE WED THU FRI SAT
- - 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 - -

06 08


 
プロフィール

name:g_sato
某社で働くWEB系エンジニア。本ブログでは脆弱性検査的なことばっかりやっていますが、セキュリティ業界の人ではなく、勤務中は普通の開発者をやっていて、プライベートで脆弱性の検査技法を探求しています。
(脆弱性を軸にWEB技術を学べてる部分もあり、脆弱性研究自体も面白いので一石二鳥な感じです。)
ブログは、情報セキュリティの学習途中の過程の記録なので、色々見苦しいかもしれません。

  *

大量の情報の中からものを見つけ出す等のINPUT系の作業は小学校の頃から得意なのですが、言うとか書くとかのOUTPUT系の作業が駄目なのでそっち側の訓練の必要性を感じています。

  *

最近、EC-CUBEの大きな脆弱性を複数見つけてEC-CUBEの安全性を高めました。
(いずれ脆弱性の詳細を公開します。脆弱性のあるバージョンをご利用の方は早めにアップデートorパッチ当てることを推奨します)

・これまで発見したEC-CUBEの脆弱性
JVNDB-2013-000043 EC-CUBE におけるアクセス制限不備の脆弱性
JVNDB-2013-000062 EC-CUBE におけるコードインジェクションの脆弱性
JVNDB-2013-000061 EC-CUBE におけるディレクトリトラバーサルの脆弱性
EC-CUBE お届け先複数指定画面でのXSS脆弱性
JVNDB-2013-000081 EC-CUBE における Windows 環境でのディレクトリトラバーサルの脆弱性
JVNDB-2013-000098 EC-CUBE における情報漏えいの脆弱性
JVNDB-2013-000097 EC-CUBE におけるクロスサイトリクエストフォージェリの脆弱性
JVNDB-2013-000105 EC-CUBE におけるクロスサイトスクリプティングの脆弱性
JVNDB-2013-000104 EC-CUBE における情報漏えいの脆弱性

・資格とか
情報セキュリティスペシャリスト保持。
2011/06~2011/12 某大手企業の脆弱性検査を担当。(その業務がものすごく面白かったのでその世界にのめりこんで現在に至る)

・趣味とか
弱将棋指し。
2005年からWWF500円会員。

※ミスご指摘等何かあればコメント欄か
38gtemp@gmail.com(全角→半角)までお願いします
twitter:https://twitter.com/secmemoblog