サイト運営者のためのWebサイトセキュリティ対策入門

【6】CSRF(クロスサイトリクエストフォージェリ:リクエスト強要)って一体何? どう対策すればいいの?

Webのセキュリティに携わる者として、残念な事件が起きてしまいました。Webアプリケーションの脆弱性を利用したいたずら(?)で一般の市民が被害にあい、誤認逮捕されてしまったニュースはご存じの方も多いでしょう。被害者の一人だった大学生が、自主退学する事態になってしまったとも報じられました。このような悲しい事件が繰り返されないよう、Webサイトの運営者は今後この脆弱性を防ぐため、より一層積極的な対応が求められるようになるでしょう。

今回はこのCSRFという脆弱性に対して、どのようなWebサイトが注意しなくてはならないのか、またどのような対策があるのかをWebサイト運営者の目線で説明します。
2012年11月8日

CSRFとは?

まずCSRFまたはリクエスト強要とは何か? これはSQLインジェクションやクロスサイトスクリプティングと同じくWebアプリケーションの脆弱性の一種で、クロスサイトリクエストフォージェリを略してCSRF(シーサーフ)と呼ばれているものです。IPAではリクエスト強要と呼んでいます。

この脆弱性を悪用するとWebサイトの掲示板などに、誰かになりすましてコメントしたり、今回の事件のように地方自治体のWebサイトへ犯罪予告のコメントを第三者になりすまして書き込むことなどができてしまいます。

CSRF脆弱性による被害

攻撃の仕組み

攻撃の仕組みの大まかな流れは、以下のようになります。

  • 【1】 攻撃者が罠を仕掛けたWebサイトを用意する
  • 【2】 被害者が罠サイトを閲覧する
  • 【3】 罠サイトを閲覧した被害者のPCから、被害者がそのときアクセスするつもりのないWebサイトの掲示板などに強制的にアクセスさせられ、コメントなどが書き込まれる
  • 【4】 書き込まれたWebサイトの接続ログを調べると、被害者のPCからのアクセス情報(IPアドレスなど)が記録されている

◆ CSRF攻撃の例

CSRF攻撃の仕組み

この脆弱性自体は過去にも話題になったことがあります。2005年にも国内のセキュリティ研究家がSNSサイトにCSRF脆弱性があることを実際に証明し、問題になりました。

大量の「はまちちゃん」を生み出したCSRFの脆弱性とは? - ITmedia エンタープライズ

また、詳しい技術的な解説は以下のサイトで説明されています。

情報処理推進機構:情報セキュリティ:脆弱性関連情報の取扱い:
知っていますか?脆弱性 (ぜいじゃくせい)/3. CSRF (クロスサイト・リクエスト・フォージェリ)
開発者のための正しいCSRF対策

どのようなWebサイトで注意が必要なのか?

フォームと呼ばれる機能を持っているWebサイトは注意が必要です。特に掲示板や、コメントを入力できるようなWebサイトはCSRF対策が必須になります。

まずはどうすればいいのか?

自分や自社が管理しているWebサイトに掲示板やコメント機能、ログイン機能などが備わっているかを確認してください。もしそのような機能が存在する場合は、Webサイトを保守している会社や開発した会社にCSRF対策が施されているかを確認します。

もし保守会社や開発会社に相談できない場合は、セキュリティ診断を相談されることをおすすめします(弊社でも実施しております。調査は有償になります)。

もしCSRF脆弱性が存在する可能性が高い場合は?

CSRFの対策は、その他の脆弱性対策に比べて厄介です。一番良い方法はプログラムを改修することですが、時間がかかったり費用が高額だったりするため、緊急対応として以下の方法もあります。

CSRF脆弱性に利用されやすい機能を停止する

前述したとおり、CSRF脆弱性の危険があるのは掲示板やコメントフォームなどと呼ばれる、「閲覧者が情報を書き込める機能」です。その機能が必須でない場合は、一時的にその機能を無効にしてしまうことで、被害を未然に防げます。

コメント承認機能などがある場合はそれを有効にする

また、コメントや意見を書き込む機能には、その情報をWebサイトに表示する前に管理者が確認する機能がついている場合もあります。そのような機能がある場合は、承認機能を有効にし、未承認の書き込みについてはWebサイトに反映させないようにしましょう。

プログラムの改修

もちろん一番の対策はWebサイトのプログラムを改修することですが、手間と時間と費用がかかります。少々仕組みの話をしますと、Webサイトの「セッション管理」を見直す必要があります。これは、簡単にいうと複数の閲覧者がWebサイトにアクセスした際に、誰がどういった行動をとったか、どのような結果を誰に表示すればいいかを管理する機能です。

CSRF脆弱性が存在するWebサイトでは、この機能に若干不備があり、攻撃者は第三者になりすますことが可能になってしまいます。CSRFへの対策としては、このセッション管理を厳密に実施する必要があります。しかし、プログラムを改修せずにCSRFの対策が可能なサービスもあります。

手軽で有効な対応 (Scutumでの対応)

ここからは自社サービスの宣伝になってしまいますが、弊社のクラウド型(SaaS型)WAFサービス「Scutum」でCSRF対策が可能です。本来、Webサイトで実施すべき厳密なセッション管理をScutumにて行うことによりCSRF攻撃を防御します。(導入時に調整が必要です。調整内容によっては有償となる場合があります。)
Scutumはクラウド型であるため、一般的なWebサイトであれば約1週間で導入が可能です。緊急対応の場合は、最短3日間での導入も可能です。(緊急対応の際は追加料金が必要となる場合がございます。ご利用環境/条件によって緊急対応の所要期間は変動します。)

CSRF対策を低コストかつ手軽に実施する方法
- WAF Tech Blog | クラウド型 WAFサービス Scutum 【スキュータム】