クロスサイトリクエストフォージェリ(CSRF)の仕組みと対策について解説|サイバー攻撃

thumbnail

こんにちは。今回はWEBアプリケーションの代表的なサイバー攻撃の1つクロスサイトリクエストフォージェリ(CSRF)の仕組みと対策について解説します。

クロスサイトリクエストフォージェリ(CSRF)攻撃とは

クロスサイトリクエストフォージェリ(CSRF)攻撃とは、ログイン機能のあるWEBアプリで、ログイン済みのユーザーからのリクエストが意図したものか識別せずに受け入れてしまっている場合に起こる脆弱性を悪用した攻撃です。
外部サイトからの不正なリクエストを受け入れてしまうと、ユーザーは意図していない処理を実行させられてしまいます。

CSRFは「Cross-Site Request Forgeries」の略称です。

【CSRF例:図】

① 攻撃者が事前にトラップサイトを用意。

② ユーザーがCSRF脆弱性のあるWEBアプリにログインする。

③ ユーザーがセッションIDを付与され、ログイン状態のままトラップサイトにアクセスする。

④ 不正なリクエストをCSRF脆弱性のあるWEBアプリに送信する。

⑤ 個人情報や設定の変更等、意図していない処理が実行させられる。

名前の似ているサイバー攻撃クロスサイトスクリプティングについては以下より。

影響と脅威

影響

以下の様なWEBサイト等はCSRF攻撃の影響を受ける可能性があります。

  • ログイン機能のあるWEBサイト
  • Cookieでセッション管理をしているWEBサイト
  • Basic認証やSSLクライアント認証を実装しているWEBサイト

中でも金銭処理が行われるWEBサイトは被害がさらに増すため特に注意する必要があります。

脅威

CSRF攻撃によって起こりうる脅威は以下のようなこと等が考えられます。

  • パスワード、メールアドレス、住所等個人情報の変更
  • 商品の購入
  • 不正送金
  • 投稿サイトでの投稿

クロスサイトリクエストフォージェリの対策

リクエストに秘密情報を付与する

フォーム内に攻撃者に推測されにくい値をリクエスト内に埋め込み照合する処理を実装します。
hiddenパラメーターに値を埋め込みPOSTメソッドでリクエストを行う方法が広く利用されています。サーバー側でリクエストを受け取った際に値の情報を比較検証して、正しいものの場合のみ処理を行います。

リクエスト元を制限する

WEBアプリ外からのリクエストを受け付けないように設定する必要があります。
Refererを使用してリンク元を判別する場合、空のRefererも無効にすると効果的ですが、ブラウザやファイアウォール等の設定によりRefererを送信しないようにしているユーザーは、当WEBアプリを利用できなくなる可能性がありますので注意が必要です。

パスワードを再入力させる

処理を行う際にパスワード認証を実装することもCSRF攻撃に有効な対策です。

キャプチャを実装する

処理を行う際に正しい画像を選択したり、パズルをあてはめたりするキャプチャ機能を実装することも効果的です。

まとめ

クロスサイトリクエストフォージェリ(CSRF)について解説しました。

CSRF攻撃の対策方法はWEBアプリの設計・仕様によって選択、実装していく必要がありますが、対策を怠ると大きな被害が発生する恐れがあります。

セキュリティは1つでも穴(セキュリティホール)が生じると攻撃者に狙われてしまいます。
可能な対策は全て行い安全性を強化しておくことが必要です。