Claude Fable 5 將“儘快填充此緩衝區”視為網路攻擊
一項基準測試發現,AI模型在被要求最佳化C++程式碼速度時,記憶體安全違規數量翻倍。Anthropic的Claude Fable 5甚至拒絕編寫快速緩衝區填充函式,將其標記為網路攻擊,但同一模型生成的程式碼卻存在大量邊界違規。
Anthropic 最新力推的模型 Claude Fable 5 被要求用 C++ 編寫一個“儘可能快”的緩衝區填充函式時,竟然直接拒絕,並引用即時安全防護機制,將其歸類為“網路攻擊”。這一現象出現在一項針對前沿模型 C++ 程式碼安全性的基準測試中。測試發現,當提示中加入“儘可能快”這一要求時,所有被測模型的記憶體安全違規數量平均翻倍,而 Fable 5 的表現尤為極端:它既是最謹慎的(拒絕編寫快速填充函式),也是最危險的(生成的程式碼記憶體安全違規最多)。
測試基於 C++ 標準委員會的擔憂——當前 AI 模型傾向於生成不符合安全配置檔案的程式碼。委員會在 P4023R0 和 P5000R1 等檔案中強調,模型訓練資料包含大量老舊或不安全的 C++ 模式,導致生成的程式碼違反現代安全規範。為驗證這一說法,測試者選取了四個旗艦模型(Claude Opus 4.8、GPT-5、Gemini 3.1 Pro 和 Claude Fable 5),在兩種提示(中性要求和速度要求)下完成五項高頻交易風格的程式設計任務,如解碼資料包、計算加權平均價格等。
結果如下:在中性提示下,模型編寫的程式碼相對安全;但加入速度要求後,所有模型的安全違規數量顯著上升。僅“記憶體安全/邊界”類別的違規(如指標算術)就從每樣本 3.9 次躍升至 7.9 次,翻了一倍。有趣的是,現代 C++ 特性(如 std::span)的使用率並未下降,說明模型並非不知道安全寫法,而是在速度壓力下主動放棄安全抽象,迴歸到訓練資料中常見的“快速但危險”的模式。這也是委員會擔憂的核心:模型輸出需要更嚴格的門控。
Claude Fable 5 的拒絕行為揭示了安全過濾器與程式碼生成器之間的脫節。它一方面對“快速填充緩衝區”過度敏感,另一方面卻生成大量不安全的程式碼。測試者指出,真正的解決方案不是簡單擴充訓練資料中的安全示例,而是在提示工程或輸出端施加更嚴格的邊界安全配置檔案(如即將到來的 C++29 Profile)。此外,測試還使用 cppcheck 和 GCC 分析器進行了驗證,發現實際未定義行為並未顯著增加,說明主要問題集中在安全指南層面,而非功能性錯誤。
這項測試表明,AI 生成的 C++ 程式碼在追求效能時會系統性地降低記憶體安全性。對於依賴 AI 輔助程式設計的開發者而言,這意味著需要額外的程式碼審查和安全驗證,尤其是在高效能場景中。