2日間で4700行のコードで大規模WordPressスパム攻撃を阻止 — CodexとClaudeに感謝
著者のサイトがスパム登録攻撃に見舞われ、Claude CoworkとOpenAI Codexを活用して2日間で4700行のコードを書き、脆弱性を特定して防御を強化し、15,000以上のスパムアカウントを削除しました。
約1か月前、著者のメインウェブサイトは新たなスパム攻撃の標的となりました。スパム送信者はユーザー名フィールドをメッセージキャリアとして利用し、偽ドメインや「残高確認」「BTC送金」「アクション必要」などの暗号資産関連の餌を仕込み、WordPressはそれらを「新規ユーザー登録」メールとして著者に転送しました。当時使用していた市販のセキュリティ製品は効果がなく、著者は自身が開発するWordPressセキュリティプラグインにスパム対策機能を組み込むことを決意。最初はCodexを使ってGmailのスパムメールスクリーンショットを基に迅速な緩和策を書き、1時間以内に問題を沈静化させました。それは6月初旬のことです。しかし先週、攻撃がさらに激しくなり、ホスティングプロバイダーからデータベースが39,000以上のユーザーアカウントと700,000以上のユーザーメタレコードに膨れ上がったと連絡がありました。ユーザーアカウントダッシュボードは読み込み不能で、プロバイダーからはデータベースのクリーンナップと攻撃の阻止を強く要請されました。
著者は2つのAIツールを併用することにしました。診断と分析にはClaude Coworkを、コード作成にはCodexを利用します。著者はChatGPT Plus(月額20ドル)を使用しており、Codexの使用制限を避けるため、Claudeの広い使用枠を活用しました。Claude Coworkは最初に管理者ログインを求めましたが、スパム送信者が管理者権限なしで悪用していることを説明すると理解し、サイトを調査し始めました。約40分後、Claudeは8つの脆弱性を特定しました。最も顕著だったのは、ユーザー登録ページにCAPTCHAがあるにもかかわらず、スパム送信者がCAPTCHAを要求しないURLを送信して登録を開始できることでした。また、プロフィールのbioフィールドにURLが埋め込まれていることも発見されました。著者はデータベースをエクスポートしてClaudeに分析させ、過去のスパム信号を抽出しました。その後、ClaudeにCodex用のプロンプトを作成させましたが、最初のバージョンは破壊的なコードを生成する恐れがあったため、著者が修正を指示して安全なプロンプトを得ました。
CodexはChatGPT Plusサブスクリプション内で主要なコーディングを担当しました。著者は3つの主要システムを構築しました。スパム検出信号の強化、標準のWordPress登録フォームやREST API、XML-RPC、admin-ajax、カスタム登録フォームを含むすべてのエントリポイントへのCAPTCHA追加、そして大規模な多段階スパムアカウントクリーンナップツールです。このツールはすべてのスパム信号分析機能を使用してアカウントを判定し、再開可能なブラウザ駆動のバッチ分析と削除インターフェースを備えています。週末にかけて集中的にコーディングを行い、土曜日にはCodexの使用制限に2回直面しましたが、「使用量をリセット」機能を使ってそれぞれ約45分の追加コーディング時間を得ました。日曜日は主にテストに充て、ローカルマシンでデータベースのコピーに対してクリーンナップツールを実行しました。各テスト実行には約2時間かかりました。3回目のリセットで最終調整を行い、日曜日の午後遅くに新しいモジュールをサーバーにデプロイしました。その後、スパム登録は発生していません。クリーンナップの結果、39,314アカウント中15,069アカウント、723,799メタレコード中275,567件を削除し、ユーザーアカウントダッシュボードも正常にアクセスできるようになりました。
著者はこの経験から、低価格のAIサブスクリプションでも緊急開発に対応できることを実感しました。ただし、AIの出力は常に人間が確認する必要があると強調しています。OpenAIは6月11日にリセット機能を導入し、対象のPlusおよびProユーザーに1回の無料リセットを提供しました。また、Codexの使用量クレジットとトークンの関係は依然として不明瞭であると述べています。