① 利用者が正規サイトへログイン
victim.example
│
│ セッションCookieを取得
▼
利用者のブラウザ
② 利用者が攻撃者サイトを開く
evil.example
│
│ 自動送信フォーム
▼
利用者のブラウザ
③ ブラウザが正規サイトへリクエスト
Cookie: session=利用者のセッション
│
▼
victim.example
④ 正規サイトが本人の操作と誤認
メール変更・送金・設定変更などを実行
重要なのは、攻撃者がセッションCookieの中身を知らなくてもよい点です。
ブラウザが送信先に対応するCookieを自動的に付けるため、攻撃者はブラウザにリクエストを送らせるだけで攻撃できる場合があります。
典型的なCSRFは、次の条件が重なった場合に成立します。
| 条件 | 内容 |
|---|---|
| 自動送信される認証情報 | セッションCookie、Basic認証、クライアント証明書など |
| 予測可能な処理 | URL、パラメータ、送信形式が攻撃者に分かる |
| 意図確認がない | CSRFトークン、Origin検証、再認証がない |
| 利用者がログイン中 | 有効な認証状態がブラウザに残っている |
| 外部サイトから送信可能 | HTMLフォーム、画像、リンクなどでリクエストを作れる |
| 状態変更が可能 | メール変更、送金、削除、権限変更などが実行される |