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

導入

CSRFとはクロスサイトリクエストフォージェリの略であり、Webアプリケーションの脆弱性を利用したサイバー攻撃の一種です。
インターネット回線の高速化やデバイスの普及によって、気軽にオンラインサービスを利用する方も増えました。
しかし、クロスサイトリクエストフォージェリによってサービス提供者とユーザーの両方に迷惑や被害が起こる可能性があります。CSRF(クロスサイトリクエストフォージェリ)とはどんなサイバー攻撃なのか。また、クロスサイトリクエストフォージェリによって起こり得る被害や対策についてご説明します。


ウェブサイトの中には、サービスの提供に際しログイン機能を設けているものがあります。ここで、ログインした利用者からのリクエストについて、その利用者が意図したリクエストであるかどうかを識別する仕組みを持たないウェブサイトは、外部サイトを経由した悪意のあるリクエストを受け入れてしまう場合があります。このようなウェブサイトにログインした利用者は、悪意のある人が用意した罠により、利用者が予期しない処理を実行させられてしまう可能性があります。このような問題を「CSRF(Cross-Site Request Forgeries/クロスサイト・リクエスト・フォージェリ)の脆弱性」と呼び、これを悪用した攻撃を、「CSRF攻撃」と呼びます。

情報セキュリティ

安全なウェブサイトの作り方 – 1.6 CSRF(クロスサイト・リクエスト・フォージェリ)

概要

ウェブサイトの中には、サービスの提供に際しログイン機能を設けているものがあります。ここで、ログインした利用者からのリクエストについて、その利用者が意図したリクエストであるかどうかを識別する仕組みを持たないウェブサイトは、外部サイトを経由した悪意のあるリクエストを受け入れてしまう場合があります。このようなウェブサイトにログインした利用者は、悪意のある人が用意した罠により、利用者が予期しない処理を実行させられてしまう可能性があります。このような問題を「CSRF(Cross-Site Request Forgeries/クロスサイト・リクエスト・フォージェリ)の脆弱性」と呼び、これを悪用した攻撃を、「CSRF攻撃」と呼びます。

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

インターネットを通じたサイバー攻撃は多く、ウェブサイトは常に狙われていると考えて良いでしょう。ドメインを取得して公開している以上、必ず何らかの攻撃を受けていると言われています。その中にいくつか危険性の高いサイバー攻撃があり、「クロスサイトリクエストフォージェリ(Cross Site Request Forgeries)」もその1つです。

クロスサイトリクエストフォージェリとはどのようなサイバー攻撃なのか?攻撃を受けるとどのような被害が発生するのか?対策方法はないのか?など、本稿ではCSRFについて解説します。


Webアプリケーションに対する代表的な攻撃手法としてXSS(クロスサイトスクリプティング)とCSRF(クロスサイトリクエストフォージェリ)というものがあります。
しかしこの二つ、名前だけでなく攻撃手法も似ていて違いがとてもわかりづらいです。かつて私がセキュリティを勉強していたときもよく混同していました。


まず、csrfとはどのようなサーバー攻撃なのかを説明します。起こりやすい被害の内容や対象となるアプリケーション、攻撃の仕組みについて解説します。


CSRF(Cross-site Request Forgery:クロスサイトリクエストフォージェリ) は Web アプリケーションのユーザー(利用者)に意図しない通信リクエストを送信させ、利用者の意図しない処理をサービスに実行させることが可能となる脆弱性、またはその脆弱性を利用した攻撃手法を指します。

昨今のサイバーセキュリティにおける代表的な攻撃手法です。

本記事では CSRF の仕組みから対策方法までそれぞれ解説していきます。


インターネットの普及により、私たちはWebサイト上でさまざまなサービスを受けることが可能になった。その一方で、こうしたWebアプリケーションの脆弱性を狙った攻撃は年々増加している。本記事では、その中でも古典的ながら今なお代表的な脆弱性で、混同されがちなクロスサイト・スクリプティング(XSS)と、クロスサイト・リクエスト・フォージェリ(CSRF)について、改めて仕組みの違いや過去の被害事例、対策を整理し紹介する。






とは

オンラインサービスを利用するユーザーがログイン状態を保持したまま悪意のある第三者の作成したURLなどをクリックした場合などに、本人が意図しない形で情報・リクエストを送信されてしまうことを意味します。リクエスト強要とも呼ばれており、ユーザー側は何が起きたのか気が付くことなく、後から被害にあったことに気が付きます。


クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。


クロスサイトリクエストフォージェリ (cross-site request forgeries) は、Webアプリケーション脆弱性の一つ[1]もしくはそれを利用した攻撃。略称はCSRF(シーサーフ (sea-surf) と読まれる事もある[2][3])、またはXSRFリクエスト強要[4]セッションライディング (session riding[3]) とも呼ばれる。1990年代はイメタグ攻撃とも呼ばれていた[要出典]。脆弱性をツリー型に分類するCWEではCSRFをデータ認証の不十分な検証 (CWE-345) による脆弱性のひとつとして分類している (CWE-352)[5]

なおCSRFの正式名称はクロスサイトスクリプティング (XSS) と似ているが、XSSは不適切な入力確認 (CWE-20) によるインジェクション (CWE-74) のひとつとして分類されており[5]、全く異なる種類の攻撃である。

CSRF脆弱性とは以下のような攻撃(CSRF攻撃)を可能にする脆弱性を指す[1]:攻撃者はブラウザなどのユーザ・クライアントを騙し、意図しないリクエスト(たとえばHTTPリクエスト)をWebサーバに送信させる。Webアプリケーションがユーザ・クライアントからのリクエストを十分検証しないで受け取るよう設計されている場合、このリクエストを正規のものとして扱ってしまい、被害が発生する。CSRF攻撃はURL[1]、画像の読み込み[1]、XMLHttpRequest[1]などを利用して実行される。

具体的被害としてはデータの漏えい[1]、意図しないコードの実行[1]、権限の取得[1]、なりすまし[1]、防御メカニズムの回避[1]、アプリケーションデータの読み取り[1]などがありうる。権限の取得が可能な場合、その被害はユーザの持つ権限に依存する。ログインしていない状態でも起こりうる主な被害としてユーザ・クライアントに電子掲示板などへ書き込みをさせる行為があり[6]、これを利用してユーザを装った犯罪予告(例:パソコン遠隔操作事件)や大量の書き込みをさせるDoS攻撃(例:「ぼくはまちちゃん」 騒動)といった事件が発生した。


クロスサイトリクエストフォージェリは、ウェブアプリケーションの脆弱性を悪用するサイバー攻撃の一種です。文字通り「サイト横断的に(Cross Site)リクエストを偽装(Request Forgeries)する」攻撃です。CSRFと略されシーサーフと呼ばれることが多くなっています。

具体的に説明します。攻撃者は罠となるサイトを用意し、ユーザーが罠にかかるのを待つかリンクやメールなどで利用者を罠サイトへ誘導します。誘い込まれたユーザーが罠サイトにアクセスし、その際にユーザーがターゲットとなるウェブサイトへログイン状態になっていると、そのウェブサイトに偽のリクエストが送信・実行されてしまうという攻撃です。

クロスサイトリクエストフォージェリ
  • 強制的にいたずらや犯罪予告などの書き込みをさせられてしまう
  • 利用中のウェブサービスなどから強制退会されてしまう
  • 登録情報などを強制的に変更されてしまう

罠サイトを経由した悪意のあるリクエストによって、第三者に不正操作されることから、IPAなどではリクエスト強要と表現されています。

CSRFと似たサイバー攻撃にXSS(クロスサイトスクリプティング:Cross Site Scripting)という攻撃があります。名称が似ており罠サイトを経由して攻撃するという点は同じですが、罠サイトにユーザーがアクセスすることで、最終的にブラウザ上で不正なスクリプトを実行させられてしまうXSSに対し、CSRFはユーザーがウェブサイトへログイン状態であることを狙い、罠サイトを経由してターゲットのウェブサイトに偽のリクエストを送信します。


またトレンドマイクロさんに聞いてみました。
一言でまとめると、「Webアプリケーション利用者自身が意図しない処理が実行されてしまう脆弱性または攻撃手法」のことです。

クロスサイトリクエストフォージェリ(CSRF)とは、Webアプリケーションに存在する脆弱性、もしくはその脆弱性を利用した攻撃方法のことです。掲示板や問い合わせフォームなどを処理するWebアプリケーションが、本来拒否すべき他サイトからのリクエストを受信し処理してしまいます。
出所:クロスサイトリクエストフォージェリ(CSRF) (TREND MICRO)


CSRF(クロスサイトリクエストフォージェリ)は、Web アプリケーションが偽装された(本来送信されるべきではない)リクエストを正規のものとして受信してしまう脆弱性、または攻撃手法を意味します。

CSRF には呼び名がいくつか存在し、以下のような名称で呼ばれることもあります。

  • シーサーフ
  • XSRF
  • リクエスト強要
  • セッションライディング

※名前の似ている攻撃手法としてXSS(クロスサイトスクリプティング)がありますが、全く異なる種類の攻撃です。

攻擊者側はこのCSRFの脆弱性を利用することで、ユーザーに高額の支払いや SNS への投稿などの通信を送付させ、それを成立させることができます。

また、アプリケーションユーザー側でこの攻撃を防御する手立ては無いため、この攻撃手法はリクエスト強要と呼称されることがあります。

典型的な CSRF 攻撃の流れを簡単に以下に紹介します。

CSRF 攻撃の流れ

  1. 攻擊者はある金融機関のオンラインサイトにおいて、自身の口座に送金するリクエストを含んだ URL を生成する
  2. 攻擊者は金融機関のサイトにログインしているユーザー A に対して、上記の URL を踏ませるような仕掛けを実行する(公開掲示板への書き込み、SNS 経由、フィッシングメールなど)
  3. ユーザーがログインした状態で、該当の URL を踏むことで、ユーザーが気づかないうちに攻擊者が仕込んだリクエストが金融機関のオンラインサイトに対して送信される
  4. 金融機関のオンラインサイトの Web アプリケーションはリクエストを正常なものとして受け取り、処理する

また、CSRF 攻撃の対象は Web アプリケーションにログインしているユーザーと思われがちですが、もちろんログインしていない状態のユーザーに対して実施される攻撃も可能です。

例えばログインシステムを持たないネット掲示板などに意図しない書き込みをさせるなどと行った攻撃方法が例として挙げられます。


クロスサイト・リクエスト・フォージェリ(以下、CSRF)も、代表的な脆弱性として知られる。XSSは動的なWebサイトにおける入力フォームの脆弱性だが、CSRFはWebアプリケーションのセッション管理に関する脆弱性のことである。

セッションとはWebアプリケーションとWebブラウザー間で、ページの状態を管理するための共通チケットのようなものだと考えるといいだろう。Webアプリケーションにこの脆弱性があり、かつユーザーがそのWebサイトにログインしている場合に攻撃を受けてしまう。

まず、ユーザーがいつも通りWebサイトにアクセスしログインをすると、WebサイトからセッションID(Cookie)が発行される。次に、攻撃者は何らかの方法で正規のWebサイトに偽装した偽サイトへユーザーを誘導する。ユーザーが知らずに正規Webサイトへの攻撃用リクエストを含んだURLをクリックすると、ブラウザーから正規WebサイトのセッションIDが付与された状態で攻撃リクエストが送信されてしまう。

Webアプリケーション側にCSRFの脆弱性がある場合、この攻撃リクエストを正しいリクエストだと誤認してしまい、本来はログインしなければできないような処理、例えばアカウント情報の変更や入出金などの操作が不正に行われる。この攻撃の厄介な点は、ユーザーの知らないところでなりすましによる操作が実行されてしまうことだ。ユーザーはCSRFによって犯罪に巻き込まれたことを後になってから知ることになる。


Webアプリケーションの脆弱性の一種となっているのが、CSRF(クロスサイトリクエストフォージェリ)です。ログイン済みのブラウザに悪意のあるサイトをユーザーにクリックさせ、意図しない処理を実行させる脆弱性です。
では、図で確認してみましょう。

利用者はいつも利用するサイトにIDとPasswordを入力し、ログインボタンをクリックします。
※ログインが成功するとセッションIDはCookieに保持されます。

利用者はログイン状態のブラウザで様々なサイトを閲覧します。
その中に攻撃者によって埋め込まれた悪意のあるサイトを知らずにクリックしてしまいます。
先ほどログインをしたサイトにアクセスするとCookieで保持されていたセッションIDが送信され、正しいセッションIDとして受理されます。
攻撃者が仕込んだスクリプトにより利用者の意図しない動作がWebサーバーに送信されてしまい、「掲示板への書き込み」や「強制退会」等の操作が行われてしまいます((((;゚Д゚))))





H2候補

  • 2.CSRF(クロスサイトリクエストフォージェリ)で起こり得る被害
  • 3.個人ユーザーが取るべきCSRF(クロスサイトリクエストフォージェリ)の対策
  • 4.サービス提供者が取るべきCSRF(クロスサイトリクエストフォージェリ)の対策
  • 攻撃の手法・特徴
  • 影響と被害
  • 対策と予防
  • トレンドマイクロのソリューション
  • 注意が必要なウェブサイトの特徴
  • 発生しうる脅威
  • 届出状況
  • 根本的解決
  • 保険的対策
  • CSRFによる被害
  • CSRF対策(ユーザーの取り組み)
  • CSRF対策(ウェブサイト運営者の取り組み)
  • WAFによるCSRF対策
  • CSRFの全体像
  • CSRFによる被害例
  • CSRFへの代表的な対策
  • XSSとCSRFの違い
  • 1-1.被害の内容
  • 1-2.対象となるアプリケーション
  • 1-3.攻撃の仕組み
  • 2. csrfの攻撃の特徴
  • 3. csrf攻撃の予防と対策
  • 4. csrf攻撃は脆弱性の対策が鍵となる
  • CSRF への対策方法とは
  • クロスサイト・スクリプティング(XSS)とは
  • XSSとCSRFによる被害事例
  • XSSとCSRFの対策
  • XSSとCSRFの違い
  • 「はまちちゃん」騒動
  • CSRF対策をしてみよう!

まとめ

※ このページは現在準備中です。記述内容は、以下の参考リンクより抜粋したものです。

参考

  • https://www.shadan-kun.com/blog/measure/2640/#:~:text=CSRF%E3%81%A8%E3%81%AF%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88,%E6%96%B9%E3%82%82%E5%A2%97%E3%81%88%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82
  • https://www.trendmicro.com/ja_jp/security-intelligence/research-reports/threat-solution/csrf.html
  • https://ja.wikipedia.org/wiki/%E3%82%AF%E3%83%AD%E3%82%B9%E3%82%B5%E3%82%A4%E3%83%88%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%83%95%E3%82%A9%E3%83%BC%E3%82%B8%E3%82%A7%E3%83%AA
  • https://www.ipa.go.jp/security/vuln/websecurity-HTML-1_6.html
  • https://siteguard.jp-secure.com/blog/what-is-csrf
  • https://qiita.com/wanko5296/items/142b5b82485b0196a2da
  • https://jp.ext.hp.com/techdevice/cybersecuritysc/52/
  • https://yamory.io/blog/about-csrf/
  • https://eset-info.canon-its.jp/malware_info/special/detail/200602.html
  • https://tech-lab.sios.jp/archives/22952

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です