【くりっくじゃっきんぐ】

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

最終更新:
💡 別のボタンを押させる見た目の罠

見た目のページとクリックを受けるページをずらし、ユーザーを意図しない操作に誘導する攻撃。透明にしたiframeを重ねる手口などがある。

📌 このページのポイント
見えるボタンと押されるボタンが違う 見えている誘導ページ 見た目:プレゼント プレゼント 対象サイトの 「いいね」 上に重ねた透明iframe 赤い層は説明用に可視化 クリック 実際の操作 「いいね」が 押される例 埋め込みを制限する応答ヘッダー CSP: frame-ancestors 'none' X-Frame-Options: DENY
青は攻撃者が見せる誘導ページ、赤い破線は上に重ねた対象サイト。対象を埋め込めて操作できる条件が揃った例です。橙はクリック、赤の横矢印は結果、緑は埋め込み制限の設定例。
ひよこ ひよこ
クリックジャッキングってどういう仕組み?
ペンギン先生 ペンギン先生
攻撃者のページに「プレゼント」ボタンを見せ、その上に対象サイトのボタンを透明なiframeで重ねる例があるよ。押したつもりのボタンと、実際にクリックを受けるボタンが違うんだ。
ひよこ ひよこ
見えないのに操作できるの?
ペンギン先生 ペンギン先生
透明でもクリックを受ける層を上に配置できるからだよ。対象サイトを埋め込めることや、操作に必要なログイン状態などが条件になる。どのサイトでも一度のクリックで操作が成功するわけではないんだ。
ひよこ ひよこ
サイト側はどう防ぐの?
ペンギン先生 ペンギン先生
CSPのframe-ancestorsで、どのサイトから埋め込んでよいかを指定する。'none'なら埋め込みを禁止するよ。X-Frame-OptionsにもDENYやSAMEORIGINがあり、HTTP応答ヘッダーとして設定するんだ。
ひよこ ひよこ
HTMLのmetaタグに書けばいい?
ペンギン先生 ペンギン先生
frame-ancestorsとX-Frame-Optionsはmetaタグでは有効にならないよ。frame-srcは自分のページが読み込むフレームの制限なので、他サイトからの埋め込みを制限するframe-ancestorsとは役割が違うんだ。
ひよこ ひよこ
ブラウザを更新すれば防げる?
ペンギン先生 ペンギン先生
ブラウザが対応していても、サイトが適切な制限を送る必要があるよ。認証CookieのSameSiteも一部の攻撃を抑えるが、ログイン不要の操作まで全て防ぐものではない。対策は対象の操作と構成に合わせて確認しよう。
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「クリックジャッキング」って出てきたら「見た目を偽って別のボタンを押させる攻撃」と思えばだいたいOK!
📖 おまけ:英語の意味
「Clickjacking」 = クリックの乗っ取り
💬 clickとhijackingを結び付けた呼び名。OWASPは、意図したクリックを別のページへ乗っ取る攻撃として説明しているよ。UI redress attackとも呼ばれるんだ。

参考資料

← 用語集にもどる