サイバー攻撃手法・脆弱性分析 重要度:★★出題: AM2・PM1
オープンリダイレクト と クリックジャッキング・ディレクトリリスティング
おーぷんりだいれくと / くりっくじゃっきんぐ / Open Redirect / Clickjacking (UI Redressing) / Directory Listing
URLパラメータで指定された任意の外部サイトへ強制遷移させるオープンリダイレクト脆弱性と、透明なiframeを重ねて意図しないボタンを押させるクリックジャッキング。
3行速習ポイント
- オープンリダイレクト:正規サイトのログイン後遷移先指定(?redirect=https://evil.example.com)等を悪用し、URLの先頭が正規ドメインであるため利用者を安心させてフィッシングサイトへ誘導(OAuthの認可コード漏洩にも悪用)
- オープンリダイレクト対策:遷移先URLを外部から直接指定させず固定番号マッピングにするか、同一ドメイン内の相対パスのみを許可・ドメインホワイトリスト検証を行う
- クリックジャッキング:罠ページ上に処理対象サイトを透明(opacity: 0)なiframeで重ねて表示し、ゲームのボタン等をクリックしたつもりの利用者に退会や送金ボタンを押させる視覚的騙し(対策はX-Frame-OptionsまたはCSP frame-ancestors)
図解
図オープンリダイレクト と クリックジャッキング の攻撃手口・根本対策
オープンリダイレクト(外部サイトへの任意遷移)リダイレクト先検証
?redirect=https://evil... を悪用したフィッシング・認可コード漏洩
URLの先頭が正規ドメインのため利用者が警戒せずアクセスし、ログイン後等に偽サイトへ遷移。【対策】遷移先を相対パスに限定、固定番号マッピング、ドメインホワイトリスト検証
クリックジャッキング(UI Redressing)iframe埋込み禁止
罠ページ上に透明(opacity:0)なiframeで正規サイトを重ねて誤操作誘導
おとりボタンを押したつもりの利用者に、背後の透明iframe内の「退会」「送金」「認可承認」ボタンを押させる。【対策】X-Frame-OptionsまたはCSP frame-ancestorsの付与
💡 クリックジャッキングは被害者自身が透明な正規ページ(iframe内)をクリックするため、正規のCSRFトークンがそのまま送信されCSRF対策では防げない
概要と本質
オープンリダイレクト単体では単なる画面遷移に見えますが、フィッシングメールの検知すり抜けや、OAuth 2.0 / OIDCにおいてリダイレクトURIの前方一致チェック不備と組み合わさることで「認可コードやアクセストークンが外部攻撃者サイトへ転送される」致命的な認証突破チェーンの起点となります。
重要ポイント・コア概念
- OAuthにおけるオープンリダイレクト連鎖:正規クライアントアプリ内にオープンリダイレクトが存在すると、認可サーバが正規ドメインへのリダイレクトを許可した後、クライアントアプリがトークンやReferer付きで攻撃者サイトへ二次リダイレクトしてしまう
- クリックジャッキングとCSRFトークンの違い:クリックジャッキングは被害者自身が正規画面(透明なiframe内)を直接クリックしているため、正規のCSRFトークンがそのまま送信されてしまいCSRFトークンでは防げない
- JavaScriptによるフレームバスターの限界:iframe側に sandbox 属性(allow-scripts なし等)を指定されるとJavaScriptによる親フレーム検知が動かなくなるため、必ずHTTPレスポンスヘッダ(X-Frame-Options / CSP)で対策する
午後記述・情報セキュリティ対策での攻略ポイント
午後問題で「なぜCSRFトークンを導入しているのにクリックジャッキングによる不正操作を防げないのか(正規ページ自身がiframe内で読み込まれ正規トークン付きで送信されるため)」「オープンリダイレクト対策(遷移先ドメインのホワイトリスト検証)」がよく問われます。
午後記述で使える加点キーワード(クリックでコピー)
関連する重要用語
この用語が出題された過去問を解く(1分演習)
即時アウトプットで定着情報処理安全確保支援士 過去問演習で実践力を鍛える