你請 AI 寫一段「使用者上傳檔案」的功能,它三分鐘給你,跑起來也對,測試也綠。你怎麼驗收的?多數人驗的是會不會跑。
2026 年 7 月 28 日 Veracode 發了一份報告,把這個習慣的代價講得很清楚。他們拿上百個模型做安全敏感的程式任務,結論一句話:語法解決了,安全沒有。
| 項目 | 數字 |
|---|---|
| 安全通過率 | 56%(上一版 55%) |
| 引入風險漏洞的產生任務 | 約 44% |
| 跨站腳本的通過率 | 15% |
| 日誌注入的通過率 | 12% |
| SQL 注入的通過率 | 83% |
| 表現最好的模型 | 68% |
功能對不等於安全對,而且這個落差兩版報告之間幾乎沒有改善。有意思的是它不是全面的差:SQL 注入和加密演算法那幾類,模型已經學得不錯;跨站腳本和日誌注入這兩類,十次有八九次過不了。
你驗的 沒有人驗的 跑不跑得起來 輸出有沒有被跳脫 測試綠不綠 日誌有沒有被注入 功能對不對 權限有沒有被繞過
為什麼會差在這幾類
我的理解是這樣:模型學的是「能跑的程式碼」,網路上能跑的範例遠多於安全的範例。跨站腳本和日誌注入的共同點是,寫錯了程式照樣跑、測試照樣綠,要有人刻意去戳才會現形。你不驗,它就不會自己冒出來。
所以真正的問題不在模型,在驗收條件。你的驗收標準寫什麼,它就往哪裡最佳化。你說「跑起來就好」,它給你跑得起來的東西,這句話它做到了。
兩個現成的外掛,做的不是同一件事
官方市集上有兩個,功能常被混為一談。
2026 年 5 月底上線的 security-guidance 是邊寫邊看:每次編輯跑一次快速的樣式檢查,每一輪對話結束跑一次模型審查,到你要 commit 或 push 時再跑一次比較深的代理審查。專案自己的規則寫在 .claude/claude-security-guidance.md,例如「我們的日誌絕對不能出現使用者輸入的原文」。
7 月下旬上線的 claude-security 是週期性體檢:它在一場 Claude Code 對話裡派出一組代理分工——先畫出架構、建威脅模型、再去找漏洞,然後對每一個發現做獨立覆核,報告寫進一個 CLAUDE-SECURITY- 開頭加時間戳的資料夾。掃描範圍可以是整個專案,也可以只掃某條分支的差異、一個 PR 或一個 commit。你挑要修的,它產出修補,但最後那一下是你自己按的,它不會自己改進去。
一個是每天的刷牙,一個是半年一次的洗牙。兩個都要,理由不同:前者攔的是當下這一次的疏忽,後者找的是已經躺在專案裡很久的東西。
動手做
兩行指令裝起來,裝完要重新載入外掛才會生效:
/plugin install security-guidance@claude-plugins-official /plugin install claude-security@claude-plugins-official /reload-plugins
裝好之後,整包掃描用 /claude-security 起跑,第一次建議先掃一條分支的差異,不要一開始就掃整個專案——報告太長你不會讀完。
不寫程式但要驗收的人,這段拿去要求交付方。它把「安全」變成可以逐項核對的東西:
這是一段要上線的程式碼。請以資安審查員的身分回答,不要改寫它: 1. 列出它處理了哪些 OWASP Top 10 的風險類別,各在第幾行。 2. 列出它沒有處理、但這段程式碼的情境下會遇到的風險類別,說明會怎麼被利用。 3. 特別檢查四件事:使用者輸入有沒有被跳脫、寫進日誌的東西有沒有過濾、 錯誤訊息會不會洩漏內部資訊、權限判斷是不是只做在前端。 4. 每一項只回「有處理/沒處理/不適用」加一句證據,不要建議重寫。 程式碼:(貼上)
做對了的樣子:你的驗收清單裡有「安全」這一欄,而且那一欄有證據不是打勾;交付方知道你會問跳脫和日誌;掃描報告你只讀「高」那一段,剩下的排進下一次。
站內延伸
- 先看到紅燈才准寫程式 → 先紅燈再綠燈
- 便條擋不住,用 hook 擋 → 便條擋不住
- 完整的驗收清單 → 找方法AI Agent 測試
來源: Veracode:2026 GenAI Code Security Report(2026-07-28;通過率 56%、約 44% 任務引入風險漏洞、跨站腳本 15%、日誌注入 12%、SQL 注入 83%、最高分模型 68%、「語法解決了,安全沒有」);Claude Code:security-guidance 外掛與週報 2026-w22(三層審查時機、專案規則檔路徑);Claude Code:Claude Security 外掛與週報 2026-w30(多代理掃描、獨立覆核、報告資料夾、掃描範圍、修補由你套用)。
安全通過率 56%、跨站腳本 15%,這個落差兩版之間沒有改善,因為沒有人在驗它。模型往你的驗收條件最佳化,你只問跑不跑,它就只保證跑得起來。邊寫邊看的外掛負責當下的疏忽,整包掃描負責陳年的舊帳,兩個都裝,然後在你的驗收表上加一欄安全。
它保證跑得起來,
沒保證安全
什麼時候看這張:它三分鐘給你一段程式,跑起來也對、測試也綠,你正要收下。
- 一百多個模型測下來,安全通過率只有五成六
- 大約四成四的產生任務會帶進風險漏洞
- 寫錯了照樣跑、測試照樣綠,要有人刻意去戳
第一個動作在你的驗收表上加一欄「安全」,要求交付方逐項給證據,不是打勾。五分鐘;程式那邊再裝兩個外掛。