こんな被害が起きます
ECサイトや会員制サービスにログインした状態のまま、攻撃者が用意した別のWebページを開いてしまうと、そのページに仕込まれた命令が、あなたがログイン中のサイトに対して自動的に送信されることがあります。パスワードの変更、送金、退会処理といった重要な操作が、本人の意思とは無関係に実行されてしまうのがCSRFの怖さです。
CSRFとは
CSRF(クロスサイトリクエストフォージェリ)は、ログイン中のユーザーのブラウザを踏み台にして、正規のリクエストになりすました操作をサーバーに送りつける攻撃です。サーバー側は「正しくログインしているユーザーからのリクエスト」としてしか判断できないため、リクエストの送信元が本人の意図した操作かどうかを検証していないと、攻撃者の用意した操作をそのまま受け入れてしまいます。XSSが「スクリプトを実行させる」攻撃であるのに対し、CSRFは「リクエストを送らせる」攻撃という違いがあります。
実際にあった被害事例
SNSで「いいね」やフォローが本人の意図なく実行されてしまう事例や、ECサイトで注文内容が勝手に変更される事例が報告されています。中小企業のサイトでも、会員向けのマイページ機能やお問い合わせフォームにCSRF対策が入っておらず、外部から任意の内容で問い合わせを大量送信されてしまうといった被害が起こり得ます。
自分のサイトは大丈夫?チェックポイント
- ログイン後に、会員情報の変更や退会などの重要な操作ができる画面がある
- フォーム送信時に、隠しトークンなどの検証項目が見当たらない
- Cookieの発行時にSameSite属性が設定されているか分からない
- フレームワークを使わず、独自にフォーム処理を実装している
対策方法
開発者向け:フォーム送信のたびに推測不可能なトークンを発行し、サーバー側で検証するCSRFトークン方式が基本の対策です。加えてCookieにSameSite=Lax(または Strict)を設定することで、他サイト経由のリクエストにCookieが自動送信されるのを防げます。主要なWebフレームワークにはこれらの機能が標準で用意されていることが多いため、無効化されていないか確認しましょう。
非エンジニアの方向け:利用しているCMSやフォームプラグインが「CSRF対策」「トークン」に対応していると明記しているか確認しましょう。会員機能を外部サービスに委託している場合は、委託先のセキュリティ対策状況を確認するのも有効です。
無料診断ではここまで
セキュリティブースターの自動診断は、フォームの構造からトークンの有無を推測することはできますが、ログインが必要な会員ページや、複雑な業務フローの中にある操作までは検証できません。実際に被害が起きやすいのは、こうしたログイン後の画面です。