基本情報技術者試験「クロスサイトリクエストフォージェリ」の問題
ある会員サイトの送金処理にCSRF対策としてトークンを導入することになった。開発者が以下の実装案を検討している。CSRF対策として有効に機能する実装はどれか。
ウ毎回異なる予測困難な値をフォーム本文に埋め込んで送らせ、サーバ保持値との一致を確かめる。
アフォーム表示のたびに誰でも分かる決まった文字列を埋め込んでおき、送信時にその文字列が含まれているかどうかだけを確かめる。
イ値はCookieだけに入れて送らせ、サーバはそのCookie中に値が存在しているかどうかだけを確かめる。
エ金額や宛先が大きい送金にだけ値を付与し、少額の送金では付与を省いて手続きを簡素にする。
正解
ウ.毎回異なる予測困難な値をフォーム本文に埋め込んで送らせ、サーバ保持値との一致を確かめる。
CSRFトークンは『正規画面からの要求でしか持ち得ない秘密の値』である必要がある。毎回異なる予測困難な値をフォーム本文に埋め込んでサーバ保持値と突き合わせれば、外部の罠サイトはその値を知り得ず偽要求を送れない。秘匿性・一意性・サーバ側照合の三点を満たす本案が有効である。
?選択肢ごとの解説
ウ ○CSRFトークンは『正規画面からの要求でしか持ち得ない秘密の値』である必要がある。毎回異なる予測困難な値をフォーム本文に埋め込んでサーバ保持値と突き合わせれば、外部の罠サイトはその値を知り得ず偽要求を送れない。秘匿性・一意性・サーバ側照合の三点を満たす本案が有効である。
ア ×誰でも分かる決まった文字列は予測可能な値であり、攻撃者が偽要求に同じ文字列を含めれば検証を通過してしまうため対策にならない。
イ ×値をCookieにのみ入れて存在確認するだけでは、ブラウザがCSRF要求時にもCookieを自動送信するため、攻撃者の偽要求でも値が付与され検証を通過してしまう。
エ ×金額で対策を出し分けると、少額の送金や攻撃者が選ぶ条件では値の付与が省かれ防御に穴が生じるため、全要求を一律に保護しなければCSRFは防げない。
✎くわしく
CSRF対策の核心は『その要求が正規の自サイト画面に由来するか』を検証することにある。鍵はトークンの予測不能性と、ブラウザが自動送信しない場所(フォーム本文やヘッダ)での受け渡しである。Cookieはブラウザが自動付与するため、それだけを根拠にすると保護にならない点が落とし穴である。
✓本番での押さえどころ
試験のコツ
有効なCSRFトークンは『推測困難・セッション単位・サーバ側で照合・自動送信されない場所で受け渡し』。固定値やCookieのみは不可。
覚え方
CSRFトークンは『毎回違う合言葉を正面玄関でだけ手渡す』。固定や自動配布では合言葉の意味がない。
よくある誤り
固定値やCookieのみの存在確認を『トークンを使っているから安全』と誤認する。予測不能性と自動送信されない受け渡しが欠けると無意味である。
情報セキュリティの他の問題
A社の経理担当者が、取引先を装ったメールに添付された請求書ファイルを業務PCで開いたところ、見慣れない画面が一瞬表示されて消…B社のWebサービスで、複数の利用者アカウントに対し正しいIDとパスワードの組合せによるログインが短時間に外部から成立する事…C社では、退職予定者や異動者のアカウント権限の見直しが滞り、業務上不要になった共有フォルダへのアクセス権が残り続けている。情…D社のファイルサーバがランサムウェアに感染し、業務ファイルが暗号化された。D社は日次でバックアップを取得しているが、バックア…E社の従業員に、取引先銀行を名乗る『口座情報の更新が必要』というメールが届いた。本文中のリンク先URLにアクセスすると、銀行…F社は社外の従業員が、カフェなどの公衆無線LANを利用して社内システムへアクセスしている。通信内容が経路上で第三者に盗聴・改…
この問題を、AIの8-ways解説つきで。
無料ではじめる →基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。
ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0099