CSRF(クロスサイトリクエストフォージェリー)とは?攻撃手法や事例、対策について解説

CSRF(クロスサイトリクエストフォージェリー)はWebセキュリティにおける3大脆弱性の1つです。

ユーザーが意図しないうちに被害が広がることから、その危険性や対策の必要性が叫ばれています。

そこで今回は、このCSRFの仕組みや被害の事例、対策などについて詳しく解説します。

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

CSRF(クロスサイトリクエストフォージェリー)とは、Webアプリケーションにおける脆弱性を利用した攻撃方法のことです。サイトをまたいで(=クロスサイト)リクエストを偽造(=フォージェリー)する手法を用いることから、このような名称が付けられました。

CSRFでは、攻撃者があらかじめ攻撃用のコードを用意(URLなど)。このコードをユーザーがクリックしてしまうと、対象となるサイトのサーバーに不正なリクエストが送信されてしまいます。ユーザーは意図しないうちに、本人のリクエストとしてサイトの情報を書き換えられたり、データを削除されてしまうといった被害を受けることになります。

攻撃者が直接手をくださず、被害者の手を使って攻撃を仕掛けるという巧妙な手口を用いるという点では、非常に悪質なセキュリティ攻撃の1つと呼べるでしょう。

自分が知らずに攻撃者側になることも

では、CSRFを用いた攻撃では具体的にどのような被害が挙げられるのでしょうか。

例えば、

  • Webサービスの会員を強制的に退会させる
  • Webサービスのデータを更新・削除してしまう
  • パスワードを変更され、アカウントが乗っ取られる
  • 書き込んでもいない情報を掲示板に書き込んでしまう

といった被害が挙げられます。

いずれの被害も、ユーザーが意図しないうちに攻撃が行われることから、攻撃に気付いたときには、被害が拡大している…といったケースも少なくありません。また、自分自身が知らないうちに攻撃者側になってしまう可能性がある点も、CSRFの恐ろしい特徴でしょう。

CSRF(クロスサイトリクエストフォージェリー)が発生する原因は?

さて、CSRFが発生する原因についてもう少し詳しく見ていきましょう。

CSRFの特徴として、ユーザーが特定のサイト(攻撃対象のサイト)にログイン状態にあることが挙げられます。

ログインしている状態をセッションと呼びますが、これはサーバーがユーザーの情報や状態を管理するために用いる仕組みで、サーバーへアクセスする際は必ずリクエストと共にセッションIDが送信され、ユーザーを認識することができます。

セッションIDが送信されることで誤認証されてしまう

CSRFの攻撃をまとめる次のような流れになります。

  1. 攻撃者が該当サイトの攻撃コードを準備して、ユーザーを誘導する
  2. 攻撃コードをクリックすると、攻撃対象サイトにリクエストを送信してしまう
  3. この時のリクエストに、ユーザーのセッションIDが一緒にリクエストされる
  4. 認証が通っている状態なので、データ更新してしまう

ここで重要となるのが、3の「ユーザーのセッションIDが一緒にリクエストされる」という部分です。先ほど、サイトへログインするにはセッションIDが、ユーザー認証に用いられるとご紹介しました。

CSRFの攻撃でも、このユーザーのセッションIDが送信されるため、サイト側が本人からのリクエストだと誤認証してしまい、情報の変更や削除といったリクエストに応じてしまうという訳です。

CSRF(クロスサイトリクエストフォージェリー)を防ぐ対策は?

では、CSRFを防ぐための対策にはどのようなものがあるのでしょうか?

サイトへリクエストする際に攻撃側が分からない情報を加える

まず、ユーザー側にできることは、怪しい攻撃コード(URL)をクリックしないということ。とくにサイトなどへログインしている状態にあれば、CSRFの被害を受ける可能性があります。

また、サイトへリクエストする際に、攻撃者側が分からない情報を加えるといった対策も効果的です。例えば、パスワードの再入力を求める方法や、ログイン時にランダムの数字や画像が表示されるCAPTCHA(画像認証)の導入。ワンタイムトークンの使用などが挙げられます。

こうした仕組みを自動化して加えておくことが、システム側に求められる対策と呼べるでしょう。

まとめ

今回は、セキュリティの3大脆弱性の1つ、CSRF(クロスサイトリクエストフォージェリー)についてご紹介しました。

CSRFは巧妙に仕組まれた攻撃手法で、ユーザーが意図しないうちに被害が拡大するだけでなく、自分自身が攻撃者側になるといった恐れがあります。思いがけない被害に巻き込まれない為にも、きちんとしたセキュリティ対策を講じて、リスクマネジメントに取り組んでおきましょう。

KRAF(クラフ)では、こうしたセキュリティの脆弱性を診断し、正しい対策方法をお客様に届ける仕事を担っています。今後ますますニーズが高まるセキュリティ分野で、私たちと一緒に働いてみませんか?

まずは採用情報から、お仕事の内容や私たちの想いを覗いてみてください。