本文とサイドメニューへジャンプするためのナビゲーションスキップです。

スタートアップガイド

J-Net21 中小企業ビジネス支援サイト

  • J-Net21とは
  • スタートアップガイド
中小機構
  • メルマガ登録
  • RSS一覧
  • お問い合わせ

HOME > 製品・技術を開発する > デジ・ステーション

デジ・ステーション


5分でわかる最新キーワード解説
「クリックジャッキング」ってなんだ?!

日々進歩するIT技術は、ともすると取り残されてしまいそうな勢いで進化の速度を高めています。そこでキーマンズネット編集部がお届けするのが「5分でわかる最新キーワード解説」。このコーナーを読めば、最新IT事情がスラスラ読み解けるようになることうけあい。忙しいアナタもサラっと読めてタメになる、そんなコーナーを目指します。今回のテーマ「クリックジャッキング」は、ブラウザの更新だけでは原理的に防ぐことのできないクリティカルなウェブ攻撃手法。この攻撃手法による被害を防ぐため、対策の検討や対策に向けた攻撃手法の分析を並行して継続的に進めることが必要です!

1.クリックジャッキングとは?

1-1 クリックジャッキングの出現

クリックジャッキングとは、Robert Hansen氏、Jeremiah Grossman氏が報告したWebユーザに対する攻撃手法である。両氏は、2008年9月27日の OWASP NYC AppSec 2008カンファレンスにおいて、クリックジャッキングの詳細を発表する予定だったが、アドビシステムズ社やその他ベンダからの要請により直前にキャンセルされた。このことはIT関連のマスコミで広く取り上げられた。
 その後の調査により、クリックジャッキングの攻撃は、主要なWebブラウザすべてに対して有効であり、その原因が、HTMLやFlashなどのコンテンツを透過表示する仕組みそのものに関わるため、対策が難しいことが分かってきた。この攻撃を用いると、任意のWebサイトをユーザに知られないままに透明化して、攻撃者の作成したサイトの上にオーバーレイ(重ねて表示)し、攻撃者のサイトへのクリックに見せかけて、透明な状態でロードされたWebサイトをクリックさせることができる。
 2009年にリリースされたMicrosoft Internet Explorer 8(以降、IE8)には、クリックジャッキングの解決を目的とした機能が追加されたが、これはHTMLレスポンスヘッダを拡張するもので、サーバ側でヘッダが記述されていないかぎり効果がない。とはいうものの、迅速なマイクロソフトの対応は心強いものだったといえるだろう。

1-2 クリックジャッキングの仕組み

クリックジャッキングは、従来から活用されてきたHTMLの仕様を、悪用することができる可能性そのもの、といった性質の手法である。

図1 標的サイトを透過指定し、他のHTMLコンテンツ上に配置
図1 標的サイトを透過指定し、他のHTMLコンテンツ上に配置

(資料提供:JPCERT/CC)

Webサイトを構成するHTMLは、iframe(インラインフレーム:画面上の任意の場所に表示できるフレーム)などの要素に他の任意のサイトを読み込み、これに透明度を指定することが可能である。この透明度を100%に設定することで、ユーザには全く分からないままに、オンラインショッピングやオークション、会員制サービスなどにおいて、ユーザの不利になる操作を行わせることが可能になるのだ。
 例えば下の図では、画面上に表示されている文字リンクをクリックしたつもりが、透明な不可視状態でロードされた外部サイトの「ログアウト」ボタンをクリックさせられてしまうことになる。こういったクリック誘導によって2009年2月には、Twitter(コミュニケーションサイト)においてユーザの意図しない投稿をさせられてしまうという事件が発生した。

図2 攻撃者サイトをクリックしたつもりが、透過指定された標的サイトをクリックしている
図2 攻撃者サイトをクリックしたつもりが、透過指定された標的サイトをクリックしている

(資料提供:JPCERT/CC)

攻撃者は自分のサイト上に用意するダミーのボタンと、クリックさせたいボタン(上の図では、会員制サービスのログアウトボタン)をピッタリと重ね合わせて置かなくてならない。
 ブラウザの種類や文字の大きさの設定などによって、Webサイトの表示は少しずつ異なるため、クリックジャッキングは「攻撃者がユーザに誤ってクリックさせようとするサイト」と「攻撃者が用意するダミーサイト」それぞれの表示のされ方を、複数のブラウザに対してピクセル単位で一致させる必要があるわけだ。この表示の揺らぎや、クリック位置の制約を考慮に入れると、クリックジャッキングで誘導できる操作と、その攻撃対象となりえるサイトおよびユーザの数は、それほど多いとは言えないだろう。

2.クリックジャッキングへの対策

2-1 クリックジャッキングの危険性

クリックジャッキングという名前が示すように、現在のところ、この手法で誘導できるのはクリックのみであり、文字入力などをさせることはできない。このことは、ユーザに悪質なサービスなどを、あらたに利用させたり、登録させたりすることはできないということを意味している。
 この制約のためか、前述のTwitterのケースを含め、現在、イタズラ以上の意味を持つ事件は起こっていない。クリックさせるだけでは、ユーザに金銭的な被害を与えることは難しいということだろう。とはいえ、JPCERT/CCが今年3月に公開した「技術メモ クリックジャッキング対策〜X-FRAME-OPTIONSについて〜(リンク先:http://www.jpcert.or.jp/memo/)」では、「その間にも、新たなクリックジャッキングの手法が出現することが予想されるため、「X-FRAME-OPTIONS」への対応、それ以外のクリックジャッキング対策の検討、そしてそれらの対策に向けた攻撃手法の分析を並行して継続的に進めることが必要。」としている。

2-2 クリックジャッキングへの対策方法

クリックジャッキングは、Webブラウザの基本的な仕様そのものを使う手法であるため、サーバサイド(Webサイト管理者)だけの対策ではどうにもならない。また、iframeの透過はHTMLのレンダリングにおいて行われる基本的な処理なので、JavaScriptの実行をストップしても、クリックジャッキングを防止することはできない。

Webサイト管理者が行える対策

Webサイト管理者が行える対策として、JavaScriptのWindowオブジェクトを使用するというアプローチがある。JavaScriptのWindowオブジェクトにおいて、window.topは「最上位のフレーム」を、window.selfは「スクリプトが記載されているフレーム自身」を表す。これを利用して、コンテンツが他のフレームなどから読み込まれている場合(window.topとwindow.selfの値が違う場合)にはダミーのコンテンツを表示するといった対策が可能である。しかし、この対策方法は手軽に導入できる反面、ユーザがJavaScriptの実行を許可していないと効果を発揮することができない。

ブラウザサイドでの対策

クリックジャッキングが利用する「透明なレイヤに任意のサイトを読み込む」という機能は、FirefoxやSafari、Operaなど、ほとんどのブラウザが実装するHTMLレンダリングにおける基本的な仕様だが、これを停止または制御することで、クリックジャッキングを防ぐことが可能である。
 Firefoxのアドオンである“NoScript”は、ブラウザの機能を制限(制御)するアプローチから、フレームの不透明度を変更し可視化する「Opacize」や、透明なiframe上でのクリックをブロックする「ClearClick」といった対策技術を提供している。
 しかし、このアプローチでは、iframeを使用した正当なサイトのコンテンツも攻撃と誤認する可能性があり、柔軟性に乏しく新たな攻撃パターンが登場するたびに、対策を講じる必要がある。また、そもそもHTMLに正式に組み込まれた描画機能をブロックする以上、正当なサイトの閲覧と利用に障害が生じる可能性も発生してしまう。

サーバとブラウザ、両方からの対策

既存のHTMLの記述とレンダリングの仕組みを維持したまま、クリックジャッキングを防ぐことが難しいことは、上の2つのアプローチがそれぞれ、決して完全なものではないことからもお分かりいただけることと思う。
 そこで、マイクロソフトがIE8から実装したのが、「X-FRAME-OPTIONS」というHTTPレスポンスヘッダである。
 「X-FRAME-OPTIONS」はサーバとブラウザのそれぞれで、次の動作を行う。

Webサーバ側は、外部サイト上のフレームに表示されることの可否を宣言する

Webブラウザは、受け取ったWebサーバからの宣言に従い、表示が許可されていない場合はそのコンテンツを外部サイト上のフレームに読み込まない
図3 X-FRAME-OPTIONS指定の有無による挙動の違い
図3 X-FRAME-OPTIONS指定の有無による挙動の違い

(資料提供:JPCERT/CC)

「X-FRAME-OPTIONS」には設定値として”DENY”と”SAMEORIGIN”が存在し、それぞれ次のように動作する。


設定値:DENY
   他のWebページ上のframe及びiframe上での表示を拒否。
  設定値:SAMEORIGIN
   Top-level-browsing-contextが一致した場合のみ、他のWebページ上のframe及びiframe上での表示を許可。


この「X-FRAME-OPTIONS」は、ApacheやIIS6.0などのWebサーバの設定で、一斉に追加することができる。ブラウザの機能を制限することなく、もっともシンプルな形で、クリックジャッキングを防ぐことのできる対策だが、IE8以外のブラウザには現時点では効果がない。他のブラウザが今後、「X-FRAME-OPTIONS」に対応するかどうかも、まだハッキリと分かってはいない状況である。
 しかし、サーバとブラウザの両サイドでの対策が必要であることは、クリックジャッキングという手法が、HTMLレンダリングの仕様そのものを利用していることからも明らかであり、Firefoxのアドオン”NoScript”も、この「X-FRAME-OPTIONS」を解釈して活用できるよう開発を進めている。
 「X-FRAME-OPTIONS」の導入方法について詳しくは、JPCERT/CCの以下のリンクを参照して頂きたい。


JPCERT/CCウェブサイト:http://www.jpcert.or.jp/
  クリックジャッキング対策方法:http://www.jpcert.or.jp/memo/

問題の背景

クリックジャッキングは、いわゆるセキュリティホールやゼロデイアタックのような問題とは、根本的に異なる背景を持っている。frameおよびiframeに透明度を設定して表示する機能は、写真などをWebサイト上にオーバーラップさせて表示する際に、実際に用いられている機能であり、その透明度を100%に設定することは実用上ありえないこととはいえ、できないように機能制限するのは、HTMLという記述の仕組みにとって、有益だと言い切れるものではないだろう。
 Webアプリケーションの充実に伴って、ブラウザはWebサービスのためのオペレーションシステムともいえる存在となってきているが、その機能が向上すればするほど、その機能そのものを悪用される可能性も出てくる。今回取り上げたクリックジャッキングが、その危険性がそれほど高くないにも関わらず、世界的な注目を集めているのも、ブラウザの占める役割の大きさに起因しているといえるだろう。
 オンラインバンキングからWebショッピング、各種申請まで、重要なトランザクションをブラウザ経由で実行する機会は増えるばかりである。向上する利便性に感謝すると同時に、セキュリティ面への注意も欠かさずに払う必要があるといえそうだ。

取材協力 :JPCERTコーディネーションセンター(略称:JPCERT/CC)

掲載日:2009年8月 5日

キーマンズネット

出典元:株式会社リクルート キーマンズネット 2009年05月27日掲載分

検索

このページの先頭へ