CSRF
2023-02-19 (日) 19:30:03
CSRF とは †
名称 †
- Cross-Site Request Forgeries
- クロスサイトリクエストフォージェリ
- XSRF
概要 †
- Webサイトのユーザ認証やセッション管理の脆弱性を悪用して、利用者にWebアプリケーションに対して不正な処理要求を行わせる攻撃手法。
- 攻撃者が用意したサイトから不正なHTTPリクエストを送信するスクリプトが組み込まれたページをダウンロードさせ、ログイン済のサイトで利用者が意図しない処理を実行させる攻撃。
- 不正な処理は、サーバ側で実行される。(クライアント側で実行されるのは、XSS)
攻撃の仕組み †
- form要素のaction属性に、他のサイトのドメインを指定する。
- form要素のsubmitが、action属性にクロスドメインが指定されていても、JavaScriptから操作できるHTMLの仕様を悪用。
- ユーザが意図しないformの送信が行われる。
対策 †
攻撃を防ぐ方法 †
- ログイン後、HTTPレスポンスに毎回異なる値を含めて、HTTPリクエストのたびに送信されるその値をWebサーバ側で照合する(異なっていた場合はエラーにする)
- POSTメソッドのhiddenに秘密情報(ランダム値など)を挿入しておいてチェックする
- HTTPリファラを確認して画面遷移の正当性(正しいリンク元からの遷移であるか)を確認する
- クライアントの設定でHTTPリファラを送信しないようにしている場合は、正当なリクエストの場合も排除されてしまう
攻撃があったことをユーザに気づかせる方法 †
- 重要な操作があったことをメールで通知する
関連サイト †
- CWE-352: Cross-Site Request Forgery (CSRF)
https://cwe.mitre.org/data/definitions/352.html
関連用語 †
- セキュリティ
- 不正アクセス
- XSS -クロスサイトスクリプティング
- CSRFトークン
- クッキーモンスターバグ
- 乱数
- OAuth2.0
- OpenID Connect