CSRF(クロスサイトリクエストフォージェリ) [情報セキュリティ]
CSRF(クロスサイトリクエストフォージェリ)
Webアプリケーションのユーザ認証やセッション管理の不備を突いて、サイトの利用者に、Webアプリケーションに対する不正な処理要求を実行させる攻撃手法です。
例えば、上記のような手続きを踏み、商品を購入するWebサイトがあったとします、このWebサイトにCSRFの脆弱性があった場合に、当該サイトの利用者が、ログイン状態を保持したまま外部のWebサイトに設置された{注文確定}画面への不正なリンクをクリックすることによって、意図しない商品を注文させられてしまう可能性があります。
他にも、CSRFにより、パスワードを強制的に変更させられる、会員制サービスから強制的に退会させられる、ブログや掲示板に意図しないメッセージを書き込まれる、などの問題が発生する可能性もあります。
CSRFの対策
CSRFによる被害を防ぐためには、Webアプリケーションのユーザ認証機能やセッション管理機能を強化し、不正なリクエストを受け付けないようにする必要があります。具体的には後述のとおりです。
【hiddenフィールドを用いてセッション管理機能を強化する】
注文確定前の確認画面(前述の例で言うと{注文内容の確認}画面)をクライアントに送る際に、擬似乱数によって算出した秘密情報をhiddenフィールドにセットするようにして、クライアントからの注文確定のリクエストがあった場合には、リクエストに含まれるhiddenフィールドの値と秘密情報とを比較し、一致した場合にのみ処理を実行します。
これにより、正規の画面を経由しない注文確定のリクエストを排除することが可能になります。なお、Referrerログから秘密情報が漏えいしないように、一連の処理にはPOSTメソッドを使用する必要があります。
【確定処理の直前で再度パスワードを入力させる】
前述の例で言うと{注文内容の確認}画面で利用者に再度パスワードの入力を求め、{注文の確定}画面では入力されたパスワードが正しい場合のみ処理を実行するようにします。
これにより、パスワードの入力がない注文確定のリクエストを排除することが可能になります。なお、この対策は比較的実装が容易ですが、利用者の負担を増やすことになる問題があります。
【Referrerを用いてリンク元の正当性を確認する】
前述の例で言うと{注文の確定}画面でリクエストのReferrer情報を確認することで、不正なサイトから送られてきた注文各リクエストを排除することが可能になります。但し、クライアントの設定などでReferrer情報を送付しないようにしている場合には、正当なリクエストであっても排除されてしまうことになります。
Webアプリケーションのユーザ認証やセッション管理の不備を突いて、サイトの利用者に、Webアプリケーションに対する不正な処理要求を実行させる攻撃手法です。
- ユーザ認証
- 商品の選択
- 商品の注文
- 注文内容の確認
- 注文確定
例えば、上記のような手続きを踏み、商品を購入するWebサイトがあったとします、このWebサイトにCSRFの脆弱性があった場合に、当該サイトの利用者が、ログイン状態を保持したまま外部のWebサイトに設置された{注文確定}画面への不正なリンクをクリックすることによって、意図しない商品を注文させられてしまう可能性があります。
他にも、CSRFにより、パスワードを強制的に変更させられる、会員制サービスから強制的に退会させられる、ブログや掲示板に意図しないメッセージを書き込まれる、などの問題が発生する可能性もあります。
CSRFの対策
CSRFによる被害を防ぐためには、Webアプリケーションのユーザ認証機能やセッション管理機能を強化し、不正なリクエストを受け付けないようにする必要があります。具体的には後述のとおりです。
【hiddenフィールドを用いてセッション管理機能を強化する】
注文確定前の確認画面(前述の例で言うと{注文内容の確認}画面)をクライアントに送る際に、擬似乱数によって算出した秘密情報をhiddenフィールドにセットするようにして、クライアントからの注文確定のリクエストがあった場合には、リクエストに含まれるhiddenフィールドの値と秘密情報とを比較し、一致した場合にのみ処理を実行します。
これにより、正規の画面を経由しない注文確定のリクエストを排除することが可能になります。なお、Referrerログから秘密情報が漏えいしないように、一連の処理にはPOSTメソッドを使用する必要があります。
【確定処理の直前で再度パスワードを入力させる】
前述の例で言うと{注文内容の確認}画面で利用者に再度パスワードの入力を求め、{注文の確定}画面では入力されたパスワードが正しい場合のみ処理を実行するようにします。
これにより、パスワードの入力がない注文確定のリクエストを排除することが可能になります。なお、この対策は比較的実装が容易ですが、利用者の負担を増やすことになる問題があります。
【Referrerを用いてリンク元の正当性を確認する】
前述の例で言うと{注文の確定}画面でリクエストのReferrer情報を確認することで、不正なサイトから送られてきた注文各リクエストを排除することが可能になります。但し、クライアントの設定などでReferrer情報を送付しないようにしている場合には、正当なリクエストであっても排除されてしまうことになります。
情報処理教科書 情報セキュリティスペシャリスト 2014年版 (EXAMPRESS)
- 作者: 上原 孝之
- 出版社/メーカー: 翔泳社
- 発売日: 2013/09/13
- メディア: 単行本(ソフトカバー)
2013-12-20 00:00
nice!(0)
コメント(0)
トラックバック(0)
コメント 0