CSRFとは?
CSRF(クロスサイトリクエストフォージェリ)とは、ログイン中のユーザーが意図しない操作を、悪意あるWebサイトやメールを通じて強制的に実行させられる攻撃手法です。Webサイト・APIの弱点を悪用し、正規のユーザーとしてログインしている状態を利用して、パスワード変更、送金、商品購入などの重要な操作を本人の知らないうちに実行させます。ユーザーのブラウザが自動的に認証情報(Cookie)を送信する仕組みを悪用するため、被害者は攻撃に気づきにくいのが特徴です。
CSRFを簡単に言うと?
銀行の窓口に例えると、あなたが銀行で本人確認を済ませて手続き中に、悪い人があなたの後ろから「100万円を私の口座に振り込んでください」という偽の振込用紙をこっそり差し込み、あなたが気づかずにその用紙にサインしてしまうようなものです。CSRFも同じで、あなたがWebサイトにログインしている間に、悪意あるサイトがあなたのブラウザに「勝手な命令」を送り込み、あなたの権限で実行させてしまいます。自分では何もクリックしていないのに、知らないうちに操作が実行されてしまう恐ろしい攻撃です。
CSRFで発生する被害は?
CSRFにより、ユーザーの意図しない操作が強制的に実行され、金銭的被害やアカウントの乗っ取りが発生します。Webサイト・APIの弱点を突かれることで、オンラインバンキングでの不正送金、ECサイトでの勝手な商品購入、SNSでの不適切な投稿などが行われます。被害者は正規の手順でログインしているため、不正な操作も正当なものとして処理され、後から取り消すことが困難な場合があります。
CSRFで発生する直接的被害
- 金銭の不正送金
オンラインバンキングにログイン中、悪意あるサイトを閲覧しただけで、攻撃者の口座への送金処理が自動実行され、預金が盗まれる
- アカウント設定の不正変更
メールアドレスやパスワードが勝手に変更され、アカウントが完全に乗っ取られて、本来の所有者がログインできなくなる
- 個人情報の不正公開
SNSのプライバシー設定が勝手に変更され、非公開にしていた個人情報や写真が全体公開されてしまう
CSRFで発生する間接的被害
- 信用の失墜
企業の管理者アカウントでCSRF攻撃を受け、不適切なコンテンツが公開されたり、顧客データが改ざんされて企業の信頼が損なわれる
- 連鎖的な被害の拡大
CSRFで乗っ取られたアカウントから、フォロワーや友人に向けて詐欺メッセージが送信され、二次被害が広がる
- 法的責任の発生
管理者権限でCSRF攻撃を受けた結果、他者の個人情報が漏洩し、管理責任を問われて賠償責任が生じる
CSRFの対策方法
CSRFへの対策は、重要な操作を実行する際に、正規のユーザーからのリクエストであることを確認する仕組みの導入が基本となります。Webサイト・APIの弱点を補強するために、CSRFトークンと呼ばれる使い捨ての認証コードの実装、リファラーチェック、二段階確認の導入が有効です。ユーザー側では、作業が終わったら必ずログアウトする、複数のサイトを同時に開かない、メールのリンクを安易にクリックしないことが重要です。
CSRFの対策を簡単に言うと?
宅配便の受け取りに例えると、本人確認のために「配達前に電話で確認」「受け取り時にサイン」「事前に発行した受取番号の提示」という複数の確認を行うようなものです。CSRFの対策も同じで、重要な操作をする時は「これは本当にあなたの操作ですか?」という確認を何重にも行います。パスワードだけでなく、その場で発行される一時的な合言葉(トークン)を使ったり、本当に実行していいか再確認画面を表示したりします。また、用事が済んだらすぐにログアウトすることで、勝手に操作される隙を与えないことも大切な対策です。
CSRFに関連した攻撃手法
Webサイト・APIの弱点において、CSRFと密接に関連する3つの攻撃手法を解説します。
- XSS(クロスサイトスクリプティング)
CSRFとXSSは組み合わせて使われることが多い攻撃です。XSSでJavaScriptを注入してCSRFトークンを盗み出し、その後CSRFで不正なリクエストを送信するという連携攻撃により、通常のCSRF対策を回避できてしまいます。
- クリックジャッキング
CSRFが勝手にリクエストを送信するのに対し、クリックジャッキングはユーザーを騙してクリックさせます。透明なレイヤーを重ねることで、CSRFと同様に意図しない操作を実行させる点で関連性があり、両者への対策を同時に検討する必要があります。
- セッション固定攻撃(関連:IDOR)
CSRFはセッション管理の弱点を悪用します。IDOR(直接参照の不備)と組み合わせることで、他のユーザーのリソースに対してCSRF攻撃を仕掛けることが可能になり、被害がより深刻化します。
CSRFのよくある質問
ログイン機能があり、重要な操作(送金、設定変更、投稿など)ができるサイト全般がリスクにさらされています。特にCSRFトークンを実装していない古いサイトは危険です。
いいえ、HTTPSは通信を暗号化しますが、CSRF攻撃は正規のユーザーのブラウザから送信されるため、HTTPSだけでは防げません。別途CSRF対策が必要です。
ログイン状態が続く限りCSRFの標的になる可能性があります。特に共用PCや公共の場所では、必ず作業後にログアウトすることが重要です。
ネイティブアプリは通常CSRFのリスクが低いですが、アプリ内でWebViewを使用している場合や、Web APIを直接呼び出している場合はリスクがあります。
アカウントの操作履歴、送金履歴、設定変更ログを定期的に確認してください。身に覚えのない操作があれば、すぐにパスワードを変更し、サービス提供者に連絡することが重要です。
更新履歴
- 初稿公開