Shikata Ga Nai

Private? There is no such things.

クリックジャッキングとは?見えないボタンに潜む攻撃の仕組みと対策

Hello there, ('ω')ノ

🕵️‍♂️ クリックジャッキングとは?

クリックジャッキング(Clickjacking)とは、ユーザーに別の目的のボタンやリンクをクリックさせるように仕向けるインターフェースベースの攻撃です。

表面的には、ユーザーは通常のウェブページで何かをクリックしているつもりでも、実際には別の隠されたサイト上の操作を実行してしまいます。


💣 攻撃の仕組み

攻撃の例:

  1. ユーザーは「賞品が当たる」ボタンがある偽サイト(デコイサイト)を開く。
  2. 実はそのボタンの背後には透明なiframeで別のウェブサイトが読み込まれている
  3. iframe内の見えない「支払いボタン」や「いいねボタン」がユーザーのクリックに反応する。
  4. ユーザーは気づかないうちに支払いを実行したり、SNSで他人をフォローしたりしてしまう。

🔍 CSRFとの違い

項目 クリックジャッキング CSRF
ユーザーの操作が必要か 必要(クリックなど) 不要(自動送信)
攻撃方法 隠しiframeなどのUIの重ね合わせ 偽造されたリクエスト送信
CSRFトークンの有無 通常通り使われる トークンで防御可能

💡 クリックジャッキングは、「正規のセッション」を使って、正規のサイト内で実行されるため、CSRFトークンでは防げません。


🔐 対策方法

  1. X-Frame-Optionsヘッダーを使用

    • DENY:全てのiframe埋め込みを拒否
    • SAMEORIGIN:同一オリジンからの埋め込みのみ許可
  2. Content Security Policy (CSP) を使用してフレームの埋め込み制御
   Content-Security-Policy: frame-ancestors 'self'
  1. 重要な操作にユーザーの明確な確認を要求

    • 二段階確認やCAPTCHAの導入など

🎯 まとめ

  • クリックジャッキングは見えないUIを使った詐欺的なクリック誘導です。
  • CSRFでは防げないため、専用の対策が必要です。
  • X-Frame-OptionsやCSPヘッダーによる埋め込み制限が効果的な対策です。

☠️ 本質的にはユーザーの視覚と行動を騙す攻撃なので、セキュリティヘッダーやUI設計が鍵となります。

Best regards, (^^ゞ