【情報処理安全確保支援士試験 令和6年度 秋期 午前2 問14】クリックジャッキング攻撃の全て
今回は、Webアプリケーションのセキュリティにおいて非常に重要なテーマの一つである「クリックジャッキング攻撃」について、その基礎から応用までを丁寧に解説していきます。この攻撃手法をしっかりと理解し、適切な対策を講じられるようになることで、皆さんのスキルアップに繋がることを願っています。
情報処理安全確保支援士試験 令和6年度 秋期 午前2 問14
【出典:情報処理安全確保支援士試験 令和6年度 秋期 午前2(一部、加工あり)】
クリックジャキング攻撃に有効な対策はどれか。
ア cookieに、HttpOnly属性を設定する。
イ cookieに、Secure属性を設定する。
ウ HTTPレスポンスヘッダーに、Strict-Transport-Securityを設定する。
エ HTTPレスポンスヘッダーに、X-Frame-Optionsを設定する。
クリックジャッキング攻撃とは?
クリックジャッキング攻撃は、ユーザーが意図しない操作をさせられてしまう、視覚的な欺瞞を利用したWeb攻撃手法です。
例えば、「いいね!」ボタンを押したつもりが、実は裏で隠された「個人情報送信」ボタンを押していた、というような事態を引き起こす可能性があります。ユーザーは通常のWebサイトを操作しているつもりでいるため、攻撃に気づきにくいのが特徴です。
背景・経緯
この攻撃手法は、2008年にセキュリティ研究者によってその概念が提唱されました。Webページ内に別のページを埋め込むことができる「iframe」などのHTML要素の特性が悪用されることで、ユーザーインターフェース(UI)の裏で悪意のある操作が実行されてしまう脆弱性が注目されました。Web技術の進化とともに、より巧妙な手口が登場し、現在もその対策はWebセキュリティにおける重要な課題の一つです。
仕組み
クリックジャッキング攻撃の基本的な仕組みは以下の通りです。
- 罠サイトの作成: 攻撃者は、ユーザーの興味を引くような魅力的なWebサイト(罠サイト)を作成します。
- 透明なレイヤーの重ね合わせ: この罠サイトの上に、攻撃対象となる正規のWebサイト(例えば、オンラインバンキングやSNSなど)を透明化した状態で重ね合わせます。この際、iframe要素などが利用されることが多いです。
- ユーザーの誘導と誤クリック: ユーザーは罠サイトのコンテンツに夢中になり、クリックしたいと思うボタンやリンクを見つけます。しかし、そのクリックしたい場所の裏には、実は透明化された正規サイトの重要なボタン(例:送金ボタン、設定変更ボタンなど)が隠されています。
- 意図しない操作の実行: ユーザーが罠サイトのボタンをクリックしたつもりでいても、実際には裏に隠されていた正規サイトのボタンがクリックされ、ユーザーの意図しない操作が実行されてしまいます。
事例
クリックジャッキング攻撃の事例としては、以下のようなものがあります。
- SNSでの意図しない「いいね!」やフォロー: ユーザーが興味のある記事の「次へ」ボタンを押したつもりが、裏で隠されたSNSの「いいね!」ボタンや「フォロー」ボタンがクリックされ、意図せず特定のアカウントをフォローしたり、投稿に「いいね!」を付けてしまったりするケース。
- オンラインショッピングでの不正な購入・送金: ユーザーが無害なボタンをクリックしたつもりが、裏で隠された商品の購入ボタンや送金ボタンがクリックされ、勝手に商品を購入されたり、送金されてしまったりするケース。
- Webサイトの設定変更・情報漏洩: 管理画面のボタンを誤クリックさせられ、Webサイトの設定が変更されたり、非公開情報が公開されてしまったりするケース。
課題
クリックジャッキング攻撃の課題は、ユーザーが攻撃を受けていることに気づきにくい点にあります。また、ブラウザやWebアプリケーションの進化に伴い、攻撃手法も巧妙化しているため、常に最新の対策を講じる必要があります。
対策
クリックジャッキング攻撃への対策は、主にWebサイト運営者側で行います。
- X-Frame-Options HTTPヘッダーの設定: Webサーバーから返されるHTTPレスポンスヘッダーに
X-Frame-Options
を設定することで、自サイトがiframeなどで埋め込まれることを制御できます。DENY
: どのサイトからの埋め込みも完全に禁止します。SAMEORIGIN
: 同一オリジン(同じドメイン)からの埋め込みのみを許可します。ALLOW-FROM uri
: 特定のURIからの埋め込みを許可します(ただし、このオプションは非推奨であり、モダンブラウザではサポートされていない場合があります)。 これは最も一般的で効果的な対策の一つです。
- Content Security Policy (CSP) の
frame-ancestors
ディレクティブの使用:Content-Security-Policy
ヘッダーのframe-ancestors
ディレクティブを使用することで、より柔軟にフレームの埋め込み元を制限できます。これはX-Frame-Options
よりも新しい、強力な対策です。 - JavaScriptによるフレームの検出と対策: JavaScriptを用いて、自サイトがフレーム内に埋め込まれているかどうかを検出し、埋め込まれていた場合は自身を最上位のウィンドウに表示し直す(フレームブレイク)といった対策も考えられます。しかし、これはJavaScriptが無効化されている場合や、ブラウザのセキュリティ機能によっては効果が限定されることがあります。
今後の動向
クリックジャッキング攻撃の手法は、ダブルクリックジャッキングなど、既存の対策を回避しようとするものも登場しています。そのため、Webアプリケーション開発者は、X-Frame-Options
やCSPといったヘッダーによる対策を徹底するとともに、ブラウザのセキュリティ機能の進化や新たな攻撃手法に常にアンテナを張り、多層的な防御を構築していくことが重要となります。
問題解説
それでは、先ほどの記事の内容を踏まえて、以下の問題に答えてみましょう。
クリックジャッキング攻撃に有効な対策はどれか。
ア cookieに、HttpOnly属性を設定する。
イ cookieに、Secure属性を設定する。
ウ HTTPレスポンスヘッダーに、Strict-Transport-Securityを設定する。
エ HTTPレスポンスヘッダーに、X-Frame-Optionsを設定する。
解説
- ア cookieに、HttpOnly属性を設定する。
HttpOnly
属性は、JavaScriptからのCookieへのアクセスを禁止することで、クロスサイトスクリプティング(XSS)攻撃によるCookie情報の窃取を防ぐための対策です。クリックジャッキング攻撃とは直接関係ありません。 - イ cookieに、Secure属性を設定する。
Secure
属性は、CookieをHTTPS接続でのみ送信するように強制するものです。これにより、通信経路上でのCookieの盗聴を防ぎますが、クリックジャッキング攻撃とは直接関係ありません。 - ウ HTTPレスポンスヘッダーに、Strict-Transport-Securityを設定する。
Strict-Transport-Security
(HSTS)は、Webサイトへのアクセスを強制的にHTTPS化するためのヘッダーです。これにより、中間者攻撃などからユーザーを保護しますが、クリックジャッキング攻撃とは直接関係ありません。 - エ HTTPレスポンスヘッダーに、X-Frame-Optionsを設定する。
X-Frame-Options
ヘッダーは、Webサイトが<iframe>
や<frame>
、<object>
要素内に表示されることを許可するかどうかをブラウザに指示するためのものです。これを設定することで、外部サイトからのクリックジャッキング攻撃を防ぐことができます。
したがって、クリックジャッキング攻撃に有効な対策は、エ です。