CSRF の手口
クロスサイトリクエストフォージェリ(CSRF)攻撃の説明として,適切なものはどれか。
- アWeb アプリケーションの入力欄にスクリプトを埋め込み,そのページを閲覧した利用者のブラウザ上でスクリプトを実行させる。
- イ利用者が Web サイトにログインしている状態で罠のページを閲覧させ,利用者が意図しないリクエストをそのサイトに送信させる。
- ウ入力欄に不正な SQL 文の断片を入力し,データベースを不正に操作したり,情報を不正に取得したりする。
- エ攻撃者が用意したセッション ID を利用者に使わせ,利用者のログイン後にそのセッション ID でなりすます。
正解と解説を見る
正解 イ
この問題の基礎知識
- Web アプリケーションは Cookie に格納したセッション ID でログイン状態を管理することが多く,ブラウザはそのサイトへのリクエストに Cookie を自動的に付けて送信する。
- CSRF は,罠のページから送らせたリクエストが正規の利用者の操作と区別できない点を突く攻撃である。対策には,推測困難なトークンをリクエストに埋め込んで照合する方法や,重要な処理の前の再認証がある。
- XSS は利用者のブラウザで攻撃者のスクリプトを実行させる攻撃,SQL インジェクションは DB への問合せを改変する攻撃,セッションフィクセーションは攻撃者が用意したセッション ID を使わせる攻撃であり,悪用する仕組みが CSRF とは異なる。
アWeb アプリケーションの入力欄にスクリプトを埋め込み,そのページを閲覧した利用者のブラウザ上でスクリプトを実行させる。
利用者のブラウザで攻撃者のスクリプトを実行させるのはクロスサイトスクリプティング(XSS)の説明である。
イ利用者が Web サイトにログインしている状態で罠のページを閲覧させ,利用者が意図しないリクエストをそのサイトに送信させる。正解
CSRF は,ブラウザがログイン済みサイトへの要求に Cookie などの認証情報を自動的に付与することを悪用し,送金や設定変更など利用者が意図しない処理を実行させる攻撃である。
ウ入力欄に不正な SQL 文の断片を入力し,データベースを不正に操作したり,情報を不正に取得したりする。
入力値を介してデータベースへの問合せを改変するのは SQL インジェクションの説明である。
エ攻撃者が用意したセッション ID を利用者に使わせ,利用者のログイン後にそのセッション ID でなりすます。
攻撃者が既知のセッション ID を利用者に使わせてなりすますのはセッションフィクセーション(セッション固定化)攻撃の説明である。
検証用の出典出典照合済み
OWASP Cross-Site Request Forgery Prevention Cheat Sheet / CWE-352 Cross-Site Request Forgery (CSRF) / CWE-384 Session Fixation照合の根拠(5 件)
- イ(正解): ログイン中の利用者のブラウザに意図しない操作を実行させる
A Cross-Site Request Forgery (CSRF) attack occurs when a malicious web site, email, blog, instant message, or program tricks an authenticated user's web browser into performing an unwanted action on a trusted site.
OWASP Cross-Site Request Forgery Prevention Cheat Sheet · Introduction(新しいタブで開きます) - イ(正解): Cookie が自動送信されることを悪用する
Since browser requests automatically include all cookies including session cookies, this attack works unless proper authorization is used
OWASP Cross-Site Request Forgery Prevention Cheat Sheet · Introduction(新しいタブで開きます) - ア(誤り): 他の利用者に表示されるページへのスクリプト注入は XSS
The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
CWE-79 · Description(新しいタブで開きます) - ウ(誤り): SQL 文の改変は SQL インジェクション
but it does not neutralize or incorrectly neutralizes special elements that could modify the intended SQL command when it is sent to a downstream component.
CWE-89 · Description(新しいタブで開きます) - エ(誤り): 既知のセッション ID を使わせるのはセッション固定化
An attacker is able to force a known session identifier on a user so that, once the user authenticates, the attacker has access to the authenticated session.
CWE-384 · Extended Description(新しいタブで開きます)