
クリックジャッキングとは、ユーザーが利用するWebブラウザを悪用して、ユーザーに不利益をもたらすサイバー攻撃の一種で、具体的な特徴としては、ボタンやリンクなどを透明で見えない状態にして、通常のWebページの上にかぶせてしまうというもの。最近はこういった攻撃の一つ一つが巧妙化し、私たちコンピュータの利用者や企業、官公庁などにとって、脅威となっています。はじめて検索してこのページにたどり着いた方も多いかと思います。聞きなれない名前に対策方法などが気になりますよね。
その攻撃方法も多様になってきているので、脅威に思っている方も多いかと思いますが、ちゃんとその概要や攻撃方法を把握し、対策方法を知っていれば怖がる必要はありません。この記事ではクリックジャッキングの概要や攻撃方法から、その対策方法を整理しましたので、しっかりとチェックして対策をしておきましょう。
クリックジャキングとは?
クリックジャッキングとは、Webブラウザを悪用して、ユーザーに不利益をもたらすセキュリティ上の攻撃手法の一つです。
具体的な特徴としては、ボタンやリンクなどを透明で見えない状態にして、通常のWebページの上にかぶせてしまうというもの。最近はこういった攻撃の一つ一つが巧妙化し、私たちコンピュータの利用者や企業、官公庁などにとって、脅威となっています。
Webブラウザはインターネットの閲覧に必ず使うものであり、利用者は世界中の老若男女となり非常に多くなります。そのため被害が発生した場合の影響が非常に大きいものとなるため、悪意を持つ者にとっては格好の標的となっています。
具体的な表示方法
上記の説明だけですとわかりにくい点も多いかと思いますので、具体的な表示方法を図にして見ました。
最も簡単なクリックジャッキングの手法として、下記のようにiframeで表示させたページを透過させるような形で、悪意あるサイトを見えないようにして、クリックさせる手口があります。
このように透明にしたサイトを重ねて表示させて、知らないうちにクリックさせるような手口になります。
具体的にサンプルを作成しました
さらにわかりやすいように具体的なサンプルボタンを作成して見ました。
通常のボタンの例
下記は通常のボタンです。特にタネも仕掛けもありません。
「Yahoo!JAPAN」をクリックすると、Yahoo!JAPANが表示されます。
まあ、当然ですね。
クリックジャッキングの例
下記はクリックジャッキングのボタン表示例です。
「当選のご案内」をクリックすると、Yahoo!JAPANが表示されます。
上記で「HTML」「CSS」のタブをクリックしていただくとわかりますが、iframeのページをCSSで透明にして上に重ねて表示させているんですね。
もしこれが「Yahoo!JAPAN」のサイトでなく、悪意のあるサイトへのリンクだったらどうなるでしょう。。
上記のような表示ですと全く気付かずにクリックしてしまいますよね。
被害に遭うとどうなる?
具体的にクリックジャッキングに引っかかってしまうと、下記のようなことが起こってしまいます。
- Flashを利用し、Webカメラやマイクを作動させる
- ソーシャル・ネットワーキング・サービスのプロフィールの公開設定を変更させる
- Twitterで誰かをフォローさせる
- Facebookでリンクをシェアさせる
- 悪意あるサイトへのリンクをクリックさせられる
このようなことを起こさせ、マルウェアの感染によって、情報を搾取したりパソコンなどの端末を乗っ取るなどの攻撃を行います。
そのほかにも、例えばウィンドウ無限表示型と呼ばれるブラウザでWebページを開くと、無限にウィンドウが開き続けるものや、CD-ROMアタックのようなCD-ROMドライブの開閉を無限に行わせてハードウェアの損傷を招くもの、JavaScriptループ型のようにJavaScriptを無限ループとして実行させることでCPUやメモリリソースを食いつぶしてパソコンの動作を非常に遅くするものなどがあります。
急激に増加する「クリックジャッキング」
Webブラウザをターゲットとした攻撃手法の中で、クリックジャッキングの特徴はボタンやリンクなどを透明で見えない状態にして、通常のWebページの上にかぶせてしまうというものです。
その結果、Webサイトの閲覧者は画面上に見えているボタンやリンクをクリックしたつもりで、意図しないまま見えないボタンやリンクを押すことで不正なプログラムを実行したり、意図しないWebサイトへ飛ばされたりしてしまいます。
この隠蔽されたボタンを押すことによって実行されるプログラムは、パソコン上で情報を取得し、外部に漏えいさせたり、パソコンの動作を乗っ取ってしまったりなどの被害をもたらす可能性があります。それは、不正なWebサイトへ飛ばされた場合も同様です。
飛ばされた先のWebサイトに不正なプログラムを実行する仕組みが設置されていて、自動で導入されてしまうといったケースが多くあります。このように利用者側に全く見えないところで、それと気づかぬままにボタン等をクリックして不正な侵入を許してしまっているところにこのクリックジャッキングの怖さがあります。
IPA(独立行政法人 情報処理推進機構)からクリックジャッキングについてのレポートが2013年に出されていますが、この中ではクリックジャッキングについての対策についても説明されています。
参考IPAテクニカルウォッチ 知らぬ間にプライバシー情報の非公開設定を公開設定に変更されてしまうなどの『クリックジャッキング』に関するレポート
クリックジャッキングへの対策
クリックジャッキングの悪質な手法に対する対策には2つの側面からのアプローチを行います。
まず、知っておきたいのはWebには、
- ブラウザで閲覧する利用者
- Webサイトを設置管理する管理者
の2つの側面があることです。
それを踏まえて、対策をまとめると以下のようになります。
ブラウザで閲覧する利用者側の対策
- ブラウザでJavaScriptやFlashなどを無効にする
- ブラウザやOSにセキュリティアップデートを適用する
JavaScriptやFlashなどの機能をブラウザ上で無効にすることによって、そもそもの不正な透明なWebページが表示されなくします。
Webサイト設置者側の対策
- HTTPレスポンスヘッダーにX-FRAME-OPTIONSを付ける
- プログラムのセキュリティアップデートを適用する
Webサイト側の設定でX-FRAME-OPTIONSを付けることによって、他のサイトのフレームを呼び出さないように設定します。これによって、不正なボタンやリンクの設定された透明なページが表示されることを防ぎます。
X-FRAME-OPTIONSを付ける方法とは
「X-Frame-Options」 ヘッダを含めておくことで、ブラウザがこの値を解釈し、
クリックジャッキングを防止する(iframe内の表示を制御)手法があります。ヘッダの値としては、
- DENY:フレーム内のページ表示を全ドメインで禁止
- SAMEORIGIN:フレーム内のページ表示を同一ドメイン内のみ許可
- ALLOW-FROM uri:フレーム内のページ表示を指定されたドメインに限り許可
があり、用途に応じて設定が可能です。
サーバ側(Apache)で対応する場合
httpd.confに以下の内容を記載する。##フレーム内のページ表示を全ドメインで禁止したい場合 Header always append X-Frame-Options DENY##フレーム内のページ表示を同一ドメイン内のみ許可したい場合 Header always append X-Frame-Options SAMEORIGIN##フレーム内のページ表示を指定されたドメインに限り許可したい場合 Header always append X-Frame-Options ALLOW-FROM http://example.jp※ mod_headersモジュールが有効になっていること。
※ virtualhost単位でも設定が可能。プログラム側で対応する場合
・PHPの場合
header()でレスポンスヘッダに出力できます。/* フレーム内のページ表示を全ドメインで禁止したい場合 */ header('X-Frame-Options: DENY');/* フレーム内のページ表示を同一ドメイン内のみ許可したい場合 */ header('X-Frame-Options: SAMEORIGIN');/* フレーム内のページ表示を指定されたドメインに限り許可したい場合 */ header('X-Frame-Options: ALLOW-FROM http://example.jp');・Javaの場合
/* フレーム内のページ表示を全ドメインで禁止したい場合 */ response.addHeader("X-Frame-Options", "DENY" );/* フレーム内のページ表示を同一ドメイン内のみ許可したい場合 */ response.addHeader("X-Frame-Options", "SAMEORIGIN" );/* フレーム内のページ表示を指定されたドメインに限り許可したい場合 */ response.addHeader("X-Frame-Options", "ALLOW-FROM http://example.jp" );
まとめ
クリックジャッキングによる攻撃は、利用者がなかなか気づきにくいところで行われています。そのため防ぐことは一見難しいように感じますが、上記のように主にブラウザー上の対策を確実に行うことで防ぐことは十分可能です。
ぜひその特徴を知ってしっかりと対応しましょう。