島までは遠い 〜サークルアラウンド株式会社代表佐藤のブログ〜

佐藤正志@サークルアラウンド株式会社のことが少しわかる場所。プログラマーを育てるトレーナーとして、現役のソフトウェア技術者として、経営者の端くれとして、想うことをつづる。

システム内メッセージを狙ったフィッシング対策

はじめに

C向けサービスにおいて、フィッシング狙いの不正メッセージが大量送付される事態に遭遇しました。その対策として実施した施策と、得られた知見を残しておきます。

有効だった対策

  • メッセージ送信のレートリミット
  • 誘導先 URL の通報(Cloudflare やドメイン提供業者への連絡)
  • メッセージ内容によるフィルタリング
  • WAF のチューニング

詳細

レートリミットの実装

最初の攻撃時、システム側にアクセス制限がほとんどなく、大量の不正メッセージが送信されてしまいました。

対策として、一定時間内に一定数以上のメッセージを送信するとリミットがかかる仕組みを実装しました。リミット発動時には Slack に通知が飛び、メッセージログ画面への URL 付きで即座に対応できるようにしました。これにより、大量送付は防げるようになりました。

メッセージフィルタリング

送信されるメッセージの文章をチェックし、不正なパターンに引っかかるものはユーザーに表示されないようフィルターを実装しました。

メール内 URL のチェック

メッセージと共に送られるメールについては、メール内の URL を自サービス経由に変更し、チェックを通してからアクセスさせる形にしました。これにより開封率にも影響があった可能性があります。

誘導先への通報

人力でも効果があったのが、誘導先 URL を whois で調べて提供元へ通報することです。

  • Cloudflare: 連絡すると最短1分、長くても2日程度でブロックしてくれる
  • ドメイン提供業者: 合わせて連絡することで、他サービスへの攻撃も防げる

頻繁に通報されるとクレカがブラックリスト入りするなど、攻撃者の根っこを断つ効果も期待できます。この通報作業は半自動化の余地がありそうです。

おしまいに

複数の対策を組み合わせた結果、攻撃者は撤退したようです。

別途 AI を使ったモダンな対策の仕組みも準備していましたが、使われないのが一番なので、少々残念ですがよかったです。

システム改善には Claude Code が大活躍し、通報メールの作成でも LLM の世話になりました。数年前に比べればかなりスムーズに対応できたと思います。

AI 時代だからこそこうした攻撃も発生するわけで、一長一短でしょうか。

苦労しているシステム運用の担当の方に届きますように。