Clickjacking
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセス:
Clickjackingとは
Clickjacking攻撃では、ユーザーが見えないか、異なる要素として偽装されたウェブページ上の要素をクリックするように騙されます。この操作により、ユーザーにとって意図しない結果が生じる可能性があります。例えば、マルウェアのダウンロード、悪意のあるWebページへのリダイレクト、資格情報や機密情報の提供、資金の送金、オンラインでの製品購入などが挙げられます。
フォームの事前入力トリック
時々、ページを読み込む際にGETパラメータを使用してフォームのフィールドの値を埋めることができます。攻撃者はこの動作を悪用してフォームに任意のデータを入力し、クリックジャッキングペイロードを送信してユーザーがボタンを押すようにすることができます。
ドラッグ&ドロップでフォームに入力する
ユーザーにフォームに入力してもらいたいが、特定の情報(例:メールアドレスや特定のパスワード)を直接求めたくない場合は、ユーザーにドラッグ&ドロップして、この例のように制御されたデータを書き込むものをドラッグ&ドロップすることができます。
基本的なペイロード
マルチステップペイロード
ドラッグ&ドロップ + クリックペイロード
XSS + Clickjacking
XSSをトリガーするためにユーザーがクリックする必要があるXSS攻撃を特定した場合、ページがClickjackingに対して脆弱であるとき、ユーザーをだましてボタン/リンクをクリックさせることができます。 例: アカウントの一部のプライベート詳細(あなただけが設定および読み取り可能)にself XSSを見つけました。これらの詳細を設定するためのフォームがClickjackingに対して脆弱であり、GETパラメータでフォームを事前に埋めることができます。 __攻撃者は、そのページに事前にXSSペイロードを埋め込んだフォームを事前に埋め込んだClickjacking攻撃を準備し、ユーザーをフォームを送信させるようにだましてしまう可能性があります。そのため、フォームが送信されると値が変更され、ユーザーがXSSを実行します。
Clickjackingの緩和戦略
クライアントサイドの防御策
クライアントサイドで実行されるスクリプトは、Clickjackingを防ぐためのアクションを実行できます:
アプリケーションウィンドウがメインまたはトップウィンドウであることを確認する。
すべてのフレームを表示する。
不可視フレームでのクリックを防止する。
Clickjackingの試みを検出してユーザーに警告する。
ただし、これらのフレームブレーキングスクリプトは回避される可能性があります:
ブラウザのセキュリティ設定: 一部のブラウザは、セキュリティ設定やJavaScriptサポートの不足に基づいてこれらのスクリプトをブロックする場合があります。
HTML5 iframe
sandbox
属性: 攻撃者は、allow-forms
またはallow-scripts
の値を設定し、allow-top-navigation
を含まないsandbox
属性を設定することで、フレームブレーキングスクリプトを無効化することができます。これにより、iframeはトップウィンドウかどうかを検証しなくなります。
サーバーサイドの防御
X-Frame-Options
X-Frame-Options
HTTPレスポンスヘッダーは、<frame>
または<iframe>
内でページをレンダリングする正当性についてブラウザに通知し、Clickjackingを防ぐのに役立ちます:
X-Frame-Options: deny
- どのドメインもコンテンツをフレーム化できません。X-Frame-Options: sameorigin
- 現在のサイトのみがコンテンツをフレーム化できます。X-Frame-Options: allow-from https://trusted.com
- 指定された 'uri' のみがページをフレーム化できます。ブラウザがこのディレクティブをサポートしていない場合は機能しない可能性があるため、制限に注意してください。一部のブラウザはCSPのframe-ancestorsディレクティブを好むことがあります。
Content Security Policy (CSP)のframe-ancestorsディレクティブ
CSP内の**frame-ancestors
ディレクティブ**はClickjacking保護の推奨方法です:
frame-ancestors 'none'
-X-Frame-Options: deny
に類似。frame-ancestors 'self'
-X-Frame-Options: sameorigin
に類似。frame-ancestors trusted.com
-X-Frame-Options: allow-from
に類似。
たとえば、次のCSPは同じドメインからのフレーミングのみを許可します:
Content-Security-Policy: frame-ancestors 'self';
詳細や複雑な例は、frame-ancestors CSPドキュメントおよびMozillaのCSP frame-ancestorsドキュメントで見つけることができます。
Content Security Policy (CSP)のchild-src
およびframe-src
child-src
およびframe-src
**Content Security Policy (CSP)**は、ブラウザがコンテンツの読み込みを許可するソースを指定することで、Clickjackingやその他のコードインジェクション攻撃を防ぐのに役立つセキュリティ対策です。
frame-src
ディレクティブ
frame-src
ディレクティブフレームの有効なソースを定義します。
default-src
ディレクティブより具体的です。
このポリシーでは、同じオリジン(self)およびhttps://trusted-website.comからのフレームが許可されています。
child-src
ディレクティブ
child-src
ディレクティブCSPレベル2で導入され、Webワーカーとフレームの有効なソースを設定するためのものです。
frame-srcおよびworker-srcのフォールバックとして機能します。
このポリシーでは、同じオリジン(self)およびhttps://trusted-website.comからのフレームとワーカーが許可されています。
使用上の注意:
廃止予定: child-srcはframe-srcおよびworker-srcに取って代わられる過程にあります。
フォールバック動作: frame-srcが存在しない場合、フレームのフォールバックとしてchild-srcが使用されます。両方が存在しない場合、default-srcが使用されます。
厳密なソース定義: 悪用を防ぐためにディレクティブに信頼できるソースのみを含めます。
JavaScriptによるフレーム破壊スクリプト
完全に万全ではありませんが、JavaScriptベースのフレーム破壊スクリプトを使用して、Webページがフレーム化されるのを防ぐことができます。例:
Anti-CSRF トークンの利用
トークンの検証: Webアプリケーションで反CSRFトークンを使用して、状態を変更するリクエストがユーザーによって意図的に行われ、Clickjackedページを介して行われていないことを確認します。
参考文献
Trickestを使用して、世界で最も高度なコミュニティツールによって強化されたワークフローを簡単に構築および自動化します。 今すぐアクセス:
Last updated