用4700行代碼兩天內阻止大規模WordPress垃圾攻擊——感謝Codex和Claude
作者網站遭受垃圾註冊攻擊,利用Claude Cowork和OpenAI Codex在兩天內編寫4700行代碼,識別漏洞、加強防禦並清理15,000多個垃圾賬户。
約一個月前,作者的主網站遭受了新的垃圾攻擊。攻擊者利用用户名字段傳遞虛假域名和加密貨幣誘餌,例如“檢查餘額”、“提取資金”、“BTC轉賬”和“需要操作”。WordPress將這些內容轉發為“新用户註冊”郵件,作者每天收到數千封。當時使用的商業安全產品未能有效防護,於是作者決定在自己開發的WordPress安全插件中加入反垃圾功能。最初,作者將Gmail中數百封垃圾郵件的截圖餵給Codex,要求它編寫快速緩解措施。Codex完成後,作者部署了增強版插件,問題在一小時內得到解決。那是在六月初。然而,上週攻擊捲土重來,且更加兇猛。作者的託管提供商告知數據庫已膨脹至超過39,000個用户賬户和700,000個用户元記錄,用户賬户儀表板無法加載。提供商要求立即清理數據庫並阻止攻擊。
作者決定混用兩款AI工具:使用Claude Cowork進行診斷和分析,使用Codex編寫代碼。由於作者使用的是ChatGPT Plus(每月20美元)而非Pro,不想讓Codex超限,而Claude有更大的使用窗口,因此分工明確。Claude Cowork首先要求管理員登錄,但作者解釋垃圾郵件發送者無需管理員權限即可利用漏洞,Claude理解了並開始對網站進行探查。大約40分鐘後,Claude發現了八個漏洞,最顯著的是用户註冊頁面雖然有驗證碼,但垃圾郵件發送者可通過提交URL繞過驗證碼直接觸發註冊。此外,垃圾郵件發送者還將URL植入到個人簡介字段(而非URL字段)中。Claude還分析了數據庫,發現了多個識別垃圾賬户的信號。隨後,作者要求Claude為Codex編寫提示,以修復這些漏洞。Claude的第一版提示可能導致破壞性代碼,經作者檢查和糾正後,獲得了安全的提示。
Codex在ChatGPT Plus訂閲下構建了三大系統。首先,增強了垃圾檢測信號。其次,在所有開放註冊路徑上添加了驗證碼,包括標準WordPress註冊表單以及REST API、XML-RPC、admin-ajax和自定義註冊表單等入口。最後,利用Codex添加了一個多階段垃圾賬户清理工具,該工具使用所有垃圾賬户信號分析功能來確定用户賬户是否為垃圾賬户,並新增了可恢復的瀏覽器驅動批量分析和刪除界面。整個週末作者都在緊張編碼,因為每拖延一小時就會有更多垃圾賬户產生。週六,作者兩次被Codex限制使用,但通過“重置使用量”功能每次獲得了約45分鐘的額外編碼時間。週日主要在測試,將數據庫副本移至本地機器運行清理工具,每次測試約需兩小時。作者使用了第三次重置進行最終編碼修改。到週日下午晚些時候,新模塊部署到服務器。清理後,刪除了39,314個用户賬户中的15,069個,以及723,799個用户元記錄中的275,567個,用户賬户儀表板恢復正常。
作者對這次經歷進行了反思:Claude Cowork的寬使用窗口適合前期分析,而Codex擅長代碼生成,但需要仔細審核輸出。這次經驗展示了低價位AI訂閲在緊急開發中的潛力,也強調了人工監督的重要性。OpenAI於6月11日推出了重置功能,符合條件的Plus和Pro用户獲得了一次免費重置。作者提醒,務必雙重檢查AI生成的所有內容,特別是供其他AI使用的提示。