はじめに
C向けサービスにおいて、フィッシング狙いの不正メッセージが大量送付される事態に遭遇しました。その対策として実施した施策と、得られた知見を残しておきます。
有効だった対策
- メッセージ送信のレートリミット
- 誘導先 URL の通報(Cloudflare やドメイン提供業者への連絡)
- メッセージ内容によるフィルタリング
- WAF のチューニング
詳細
レートリミットの実装
最初の攻撃時、システム側にアクセス制限がほとんどなく、大量の不正メッセージが送信されてしまいました。
対策として、一定時間内に一定数以上のメッセージを送信するとリミットがかかる仕組みを実装しました。リミット発動時には Slack に通知が飛び、メッセージログ画面への URL 付きで即座に対応できるようにしました。これにより、大量送付は防げるようになりました。
メッセージフィルタリング
送信されるメッセージの文章をチェックし、不正なパターンに引っかかるものはユーザーに表示されないようフィルターを実装しました。
メール内 URL のチェック
メッセージと共に送られるメールについては、メール内の URL を自サービス経由に変更し、チェックを通してからアクセスさせる形にしました。これにより開封率にも影響があった可能性があります。
誘導先への通報
人力でも効果があったのが、誘導先 URL を whois で調べて提供元へ通報することです。
- Cloudflare: 連絡すると最短1分、長くても2日程度でブロックしてくれる
- ドメイン提供業者: 合わせて連絡することで、他サービスへの攻撃も防げる
頻繁に通報されるとクレカがブラックリスト入りするなど、攻撃者の根っこを断つ効果も期待できます。この通報作業は半自動化の余地がありそうです。
おしまいに
複数の対策を組み合わせた結果、攻撃者は撤退したようです。
別途 AI を使ったモダンな対策の仕組みも準備していましたが、使われないのが一番なので、少々残念ですがよかったです。
システム改善には Claude Code が大活躍し、通報メールの作成でも LLM の世話になりました。数年前に比べればかなりスムーズに対応できたと思います。
AI 時代だからこそこうした攻撃も発生するわけで、一長一短でしょうか。
苦労しているシステム運用の担当の方に届きますように。