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

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


CSRF(クロスサイトリクエストフォージェリ)攻撃とは、Webアプリケーションの脆弱性を利用し、ユーザーの権限を使って外部サイトから不正なリクエストを処理させる攻撃手段のことです。

攻撃によって、Webサイトの掲示板に他のユーザーを装って犯罪予告などを投稿したり、インターネットショッピングの最終決済に強制的に進ませたり、パスワードを変更してアカウントを乗っ取ったり、非公開の情報を公開させたりなどの被害が発生します。
CSRF攻撃の影響がリクエストを受けるサーバ上で生じるという点が、レスポンスを受けたブラウザ上で影響が生じるクロスサイトスクリプティング(XSS)とは異なります。

またWebアプリケーションの完成後にCSRF攻撃への対策を行おうとすると大がかりな修正が発生してしまうため、費用や労力の部分で対策の実行が難しい点があげられます。
そのため、CSRF攻撃への対策が後回しになり、攻撃者の不正なアクセスを許してしまう状況が発生しているのです。CSRF攻撃では、そのユーザー権限の範囲によって大小さまざまな被害が及びます。

クロスサイトリクエストフォージェリ/CSRFの対策法とは


CSRF攻撃への対策はWebアプリケーションの設計段階から講じていく必要があります。対策はすべての画面に施す必要はなく、パスワードや個人情報の変更、決済、投稿などの処理を、リクエスト送信によって確定する画面に対して行います。
フォームに「トークン」と呼ばれる秘密情報を埋め込み、その値を照合して正しいときのみリクエストを受け付けることで、送信前の画面を限定することができます。
最も簡単なトークンの一つはセッションIDの値です。トークンを外部サイトから取得・推測できないようにすれば、トークンが合致しない場合をエラーとして処理することで、ユーザーの意図しない操作を排除できます。

処理する前にパスワードをユーザーに求めることも効果的な対策の一つです。注意点としてあげられるのは、トークンを発行する画面ではそれが盗聴されないようSSL/TLSで暗号化されている必要があります。また、ログイン時にはセッションIDを更新するようにしましょう。

クロスサイトリクエストフォージェリ/CSRFの事例


CSRF攻撃を受けた代表的な事例として2005年4月に大手SNSサイトで、投稿者の意図に反して書き込まれるという事案が発生しました。
この書き込みには他のユーザーを同様に誘導する仕組みが施されていたため、同じ定型文が急速にSNSサイト内に出回ってしまうことになりました。
ユーザーの中にはシステムエンジニアもいたことから、混乱の原因としてCSRF攻撃であることが指摘されたものの、サイト運営側の対処が後手に回ってしまったため混乱が終息するまでに時間を要しました。同様の事例は他のSNSサイトでも見られ、CSRF攻撃が問題視されました。

またCSRF攻撃によって、小学校襲撃予告事件も発生しています。これは自治体が運営するWebサイトの意見投稿コーナーに、管轄する小学校への無差別殺人予告が投稿された事件です。犯人はCSRF攻撃によって他人になりすまして書き込みを行っていたことが判明しています。
ちなみに本事件は攻撃を受けたパソコンを所有していた大学生が逮捕・起訴されるという事態にまで発展しましたが、後に警察は誤認逮捕を認めて謝罪をしています。