対象試験と出題頻度

詳細をクリックして確認
対象試験:
情報セキュリティマネジメント
基本情報技術者
応用情報技術者
出題頻度:
★★★★☆
ランクA(重要)

用語の定義

クロスサイトリクエストフォージェリ(CSRF)とは、一言で言うと「ログイン中のユーザーに、本人が意図しない操作を強制的に実行させる攻撃」のことです。

イメージとしては、「銀行のATMにログインしたまま離席している間に、後ろから誰かがあなたの手を掴んで勝手に送金ボタンを押す」ようなものです。
攻撃者が用意した罠サイトを閲覧するだけで、別のサイトにログイン中のユーザーのセッション(認証状態)を悪用し、不正な操作が実行されてしまいます。

解説

クロスサイトリクエストフォージェリ(Cross-Site Request Forgery、略称CSRF/XSRF)は、「リクエスト偽造」を意味するWebアプリケーションの脆弱性を悪用した攻撃です。ユーザーが正規のWebサイト(SNS、銀行、ECサイトなど)にログインした状態で、攻撃者が仕込んだ罠ページにアクセスすると、ユーザーの意図しないリクエストが正規サイトに送信されてしまいます。

  • 攻撃の仕組み:ユーザーがサイトAにログイン中に、攻撃者が用意した罠サイトBを閲覧すると、罠サイトBからサイトAへ不正なリクエストが自動送信されます。サイトAはログイン中のユーザーからの正規リクエストと区別できず、処理を実行してしまいます。
  • XSSとの違い:XSS(クロスサイトスクリプティング)はユーザーのブラウザ上で悪意のあるスクリプトを実行させる攻撃ですが、CSRFはユーザーの認証状態を悪用して不正なリクエストを送信させる攻撃です。攻撃対象がブラウザか、Webサーバーかという点で異なります。

CSRF攻撃による被害は深刻で、SNSでの意図しない投稿や友達追加、ECサイトでの不正な購入、オンラインバンキングでの不正送金、パスワードやメールアドレスの変更など、ログイン中のユーザーができるあらゆる操作が悪用される可能性があります。過去には大手SNSやWebサービスでも被害事例が報告されています。

具体的な活用例・対策

CSRF対策は、Webアプリケーション開発においてセッション管理と並ぶ重要なセキュリティ対策です。

  • CSRFトークン(ワンタイムトークン): フォーム送信時に、サーバーが発行した予測困難なトークンを埋め込み、リクエスト受信時に検証します。正規のページからのリクエストのみ受け付ける最も効果的な対策です。
  • SameSite Cookie属性: Cookieに「SameSite=Strict」または「SameSite=Lax」を設定し、異なるサイトからのリクエストにCookieを送信しないようにします。
  • Refererヘッダーの検証: リクエストの送信元(Referer)をチェックし、正規サイトからのリクエストのみを受け付けます。ただし、Refererが送信されない環境もあるため、補助的な対策として使用します。
  • 重要な操作での再認証: パスワード変更や送金など重要な操作を行う前に、再度パスワード入力を求めることで、不正リクエストを防ぎます。
  • CAPTCHAの導入: 人間による操作であることを確認するCAPTCHAを導入し、自動的なリクエスト送信を防止します。

試験ではこう出る!

情報セキュリティマネジメント、基本情報技術者、応用情報技術者で頻出です。以下のキーワードとセットで覚えましょう。

【重要キーワード】

  • CSRFトークン(ワンタイムトークン)
  • SameSite Cookie属性
  • セッションハイジャックとの違い
  • XSS(クロスサイトスクリプティング)との違い
  • リクエスト強要(リクエストフォージェリ)

試験問題で「ログイン中のユーザーに意図しない操作を強制的に実行させる攻撃」「トークンを用いてリクエストの正当性を検証することで防げる攻撃」といった記述があれば、それは「クロスサイトリクエストフォージェリ(CSRF)」に関する記述です。


【確認テスト】理解度チェック

ここまでの内容を理解できたか、簡単なクイズで確認してみましょう。

Q. クロスサイトリクエストフォージェリ(CSRF)に関する説明として、最も適切なものはどれでしょうか?

  • A. Webページに悪意のあるスクリプトを埋め込み、閲覧者のブラウザ上で不正なプログラムを実行させる攻撃
  • B. 通信経路上でセッションIDを盗聴し、正規ユーザーになりすましてサービスを利用する攻撃
  • C. ログイン中のユーザーに罠サイトを経由して意図しないリクエストを送信させ、不正な操作を実行させる攻撃

正解と解説を見る

正解:C

解説:
クロスサイトリクエストフォージェリ(CSRF)は、ログイン中のユーザーが攻撃者の用意した罠サイトを閲覧することで、ユーザーの意図しないリクエストが正規サイトに送信され、不正な操作(投稿、購入、設定変更など)が実行されてしまう攻撃です。対策としてはCSRFトークン(ワンタイムトークン)の導入やSameSite Cookie属性の設定が有効です。
選択肢Aは「クロスサイトスクリプティング(XSS)」の説明です。選択肢Bは「セッションハイジャック」の説明であり、いずれもCSRFとは異なる攻撃手法です。