情報セキュリティ

基本情報技術者試験クロスサイトリクエストフォージェリ」の問題

情報セキュリティ情報セキュリティ難易度:hard
ある会員サイトの送金処理にCSRF対策としてトークンを導入することになった。開発者が以下の実装案を検討している。CSRF対策として有効に機能する実装はどれか。
毎回異なる予測困難な値をフォーム本文に埋め込んで送らせ、サーバ保持値との一致を確かめる。
フォーム表示のたびに誰でも分かる決まった文字列を埋め込んでおき、送信時にその文字列が含まれているかどうかだけを確かめる。
値はCookieだけに入れて送らせ、サーバはそのCookie中に値が存在しているかどうかだけを確かめる。
金額や宛先が大きい送金にだけ値を付与し、少額の送金では付与を省いて手続きを簡素にする。
正解
毎回異なる予測困難な値をフォーム本文に埋め込んで送らせ、サーバ保持値との一致を確かめる。

CSRFトークンは『正規画面からの要求でしか持ち得ない秘密の値』である必要がある。毎回異なる予測困難な値をフォーム本文に埋め込んでサーバ保持値と突き合わせれば、外部の罠サイトはその値を知り得ず偽要求を送れない。秘匿性・一意性・サーバ側照合の三点を満たす本案が有効である。

?選択肢ごとの解説

ウ ○CSRFトークンは『正規画面からの要求でしか持ち得ない秘密の値』である必要がある。毎回異なる予測困難な値をフォーム本文に埋め込んでサーバ保持値と突き合わせれば、外部の罠サイトはその値を知り得ず偽要求を送れない。秘匿性・一意性・サーバ側照合の三点を満たす本案が有効である。
ア ×誰でも分かる決まった文字列は予測可能な値であり、攻撃者が偽要求に同じ文字列を含めれば検証を通過してしまうため対策にならない。
イ ×値をCookieにのみ入れて存在確認するだけでは、ブラウザがCSRF要求時にもCookieを自動送信するため、攻撃者の偽要求でも値が付与され検証を通過してしまう。
エ ×金額で対策を出し分けると、少額の送金や攻撃者が選ぶ条件では値の付与が省かれ防御に穴が生じるため、全要求を一律に保護しなければCSRFは防げない。

くわしく

CSRF対策の核心は『その要求が正規の自サイト画面に由来するか』を検証することにある。鍵はトークンの予測不能性と、ブラウザが自動送信しない場所(フォーム本文やヘッダ)での受け渡しである。Cookieはブラウザが自動付与するため、それだけを根拠にすると保護にならない点が落とし穴である。

本番での押さえどころ

試験のコツ

有効なCSRFトークンは『推測困難・セッション単位・サーバ側で照合・自動送信されない場所で受け渡し』。固定値やCookieのみは不可。

覚え方

CSRFトークンは『毎回違う合言葉を正面玄関でだけ手渡す』。固定や自動配布では合言葉の意味がない。

よくある誤り

固定値やCookieのみの存在確認を『トークンを使っているから安全』と誤認する。予測不能性と自動送信されない受け渡しが欠けると無意味である。

情報セキュリティの他の問題

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-sec-0099

【基本情報技術者試験】クロスサイトリクエストフォージェリの問題 — 解答・解説|ukamiru 過去問