Webページのボタンやバナーのクリック操作を悪用し、透明レイヤーを使うなど、ユーザーに気付かれないような仕掛けを施して仕掛けた側の意図に沿った操作をさせる攻撃手法。
信頼の置けるWebサイトであれば、そのページに配置されているボタンやバナー、リンクURLなどをクリックしても、表示内容や意図通りの結果が起こる。
「クリックジャック」は、そうしたインターネット上における習慣を逆手に取ってユーザーに何げなく「クリック」という動作を行わせて、その結果、利用者の意図しない操作を行わせる(=乗っ取る=ジャックする)。
例えば、以下のような被害が確認されている。
- ユーザーが見えているのとは異なる広告ページのURLのクリックをさせられる
- 意図しない掲示板への書き込みをさせられる
- したつもりのないSNSなどのサービスにおける「いいね」のクリックをさせられる
- 望んでいないのにSNSなどのサービスの退会処理をさせられる
仕組みとしてはHTMLの知識があれば簡単なものである。
1)利用者をだますためのページ(A)を用意しておき、iframe(インライン・フレーム、Webページの中に別のページの内容を入れ込むことができるタグのこと)の要素に読み込ませたページ(B)を(A)のページ内に表示する。
2)(A)のページにあるボタンAと、(B)のページにあるボタンBが重なるようにiframeの位置を調整する。
3)最後に(B)を読み込んでいるiframeをスタイルシートを使って透明化すれば準備完了でる。
クリックジャッキングの仕組み
影響
インターネット上において「クリック」するという行為は、「同意する」「同意しない」「受け入れる」「拒絶する」といった、ユーザーによる積極的な意志を表す。したがって、その結果は、ユーザーの責任の下に選択されたという前提がある。ところがこの「クリックジャッキング」攻撃は、こうした前提に便乗して、意図しない操作(投稿、つぶやきなど)を実行するものである。
上記の図のように、掲示板に犯行予告を書き込むという操作が実行された場合、クリックした結果が全くユーザーのあずかり知らないところで影響を及ぼすこともある。
基本的に、「CSRF」(クロスサイトリクエストフォージェリ)と同等の影響がある。
主な対策
ユーザーとしては、ブラウザやOSの脆弱性を放置しないように常に最新の状態にすること、が第一に挙げられる。
またWebサイトを運営する側としては、クリックジャッキングの影響を受けると困るページには、「X-FRAME-OPTIONS 」に関する以下のHTTPレスポンスヘッダを指定することで、対策が可能である。
- frame/iframeを禁止してよい場合
X-FRAME-OPTIONS: DENY - frame/iframeを禁止できないが単一ホストで運用できる場合
X-FRAME-OPTIONS: SAMEORIGIN