クライアント・パソコンを狙った攻撃が巧妙さを増し,対策はますます難しくなってきている。中でもJavaScriptやFlashのぜい弱性を悪用した,スクリプトを使う攻撃は極めて厄介である。スクリプトは静的なWebページだけでなく,動的コンテンツ,画像,ファイルに含まれていることがあり,攻撃を受けた時期の特定が難しいからだ。

 そんな中で,今後大きな脅威になると見られている攻撃手法の一つに,「GIFAR」がある。2008年8月に報告された攻撃手法で,2009年2月にホワイトハット・セキュリティのCTOであるジェレミア・グロスマンをはじめとするWebセキュリティの専門家が選ぶ「Top Ten Web Hacking Techniques of 2008」の1位に選ばれた。日本ではあまり話題になっていないが,いつやって来るか分からない。今後の影響範囲を考えると,特にWebアプリケーション開発者は知っておくべき攻撃手法である。

ブラウザでGIFファイルを開くだけで動作

 GIFARとはGIFにJAR(Javaアーカイブ)を埋め込んだファイルのことである。攻撃としては,JARファイルが埋め込まれたGIFファイルを,一つのJARファイルとして認識させる。悪意あるサイトを介するなどしてこのJARファイルをブラウザで開くと,Java実効環境(JRE:Java Runtime Environment)が埋め込まれたJavaアプレットを実行してしまう。つまりGIFARは,JREが本来実行してはいけないはずのJARファイルを読み込んでしまうぜい弱性を突いた攻撃なのである。

 埋め込み技術自体は,画像ファイルに他のデータを隠すステガノブラフィを応用したものである。実は,2007年にハッカー・グループのGNUCITIZNが,これによく似た技術を報告している。その際はJPEGにJARを埋め込んだものだった。

 GIFARの基本的な仕組みは図1のようになっている。このファイルを画像閲覧ソフトで開くと,図1のGIFデータのうち(A)の画像データが認識され,元の画像が表示される。そしてブラウザで開くと,appletタグで書かれたGIFARファイル部分を読み込み,プログラムを実行する。ちなみに,図1(B)のヘッダーにある“PK”の文字列はZIP形式のファイルに見られるものである。つまりJARファイルは,ZIPを利用してJavaの実行ファイル(classファイルなど)をパッケージ化したものということになる。

GIFARのデータ構造
図1●GIFARのデータ構造

 多くのWebサイトでは,画像ファイルをアップロードする際,ファイルの内容をチェックし,不審なファイルを拒否する仕組みを備えている。ところが,GIFARは拡張子およびヘッダー情報ともに正真正銘のGIFファイルであるため,攻撃者は通常の画像ファイルと同様にアップロードできる。GIFARをバイナリ・エディタで開くと図2のようになっており,GIFファイルとJARファイルそれぞれのヘッダー,およびフッター情報が確認できる。

図2●GIFARファイルをバイナリ・エディタで開いたところ
[画像のクリックで拡大表示]