クライアント・パソコンを狙った攻撃が巧妙さを増し,対策はますます難しくなってきている。中でも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ファイルをバイナリ・エディタで開いたところ
[画像のクリックで拡大表示]

この先は会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら