AI 資安報告寫「檢查通過」,內容就是真的嗎?實測 Cloudflare 的查漏洞技能包
重點摘要
- cloudflare/security-audit-skill 的格式檢查器自帶 65 項測試,全數通過,約 0.4 秒。
- 嚴重度寫 critical 但已證明影響只有 medium 的報告,被檢查器退回。
- 證據路徑寫成 ../../etc/passwd 的報告被擋下。
- 證據指向不存在的檔案、實測結果只寫「Trust me, it happened.」的報告,檢查器仍回 PASS。
- 結論: 檢查器只驗格式,不驗內容真假;通過不代表漏洞是真的。
- 適合: 想讓 AI 審查報告格式一致、避免嚴重度灌水的人
- 不適合: 把「檢查通過」當成「漏洞已被證實」的人
| 實測項目 | 結果 |
|---|---|
| 自帶測試 | 65 項、65 通過、0 失敗,約 0.4 秒 |
| 嚴重度灌水 | 被退回 |
| 路徑逃出專案資料夾 | 被擋下 |
| 編造證據位置與結果 | 通過 |
| AI 查證員階段 | 未測 |
假設你請 AI 幫公司網站做資安檢查,它交回一份報告,寫著「發現嚴重漏洞」,旁邊還附一句「已通過檢查器驗證」。你會直接拿去給老闆看嗎?
Cloudflare 公開了一套叫 security-audit 的技能包(MIT 授權,約 4.5 萬顆星)。它讓 AI 助理分階段查漏洞,最後把結果寫成 findings.json,再交給一支 validate-findings.cjs 檢查。我想知道的是:這支檢查器到底在檢查什麼?
測試設備:Mac mini M4 Pro(12 核、64GB),Node v22,版本為 commit c1c8a8c(2026-09-14)。
先跑它自己的測試
cd skills/security-audit
node --test *.test.cjs
結果:65 項測試、65 項通過、0 失敗,約 0.4 秒。一份寫得正常的報告,檢查器回「PASS: 1 findings valid」。

故意寫壞三份
| 改壞的方式 | 檢查器結果 |
|---|---|
| 只證明了中等影響,嚴重度卻寫 critical | 退回:cannot exceed demonstrated impact "medium" |
| 證據檔案路徑寫成 ../../etc/passwd | 退回:must be a safe repository-relative source path |
| 證據指向不存在的 src/does_not_exist.c 第 99999 行,實測結果只寫「Trust me, it happened.」 | 通過:PASS: 1 findings valid |

前兩種是格式與邏輯上的矛盾,檢查器擋得很實在。但第三種,內容根本是編的,它也放行。原因很單純:它只讀 JSON,不會去打開專案原始碼核對檔案與行號是否存在,也無從驗證「真的重現過」。
判讀
技能包的設計是另外派出獨立的 AI 查證員,去反駁每個候選漏洞、再驗證最終的引用。那一段需要真的有一個程式助理在跑,我這次沒有測,所以不能說它的查證成效如何。我能確認的只有:格式檢查器本身不保證內容為真。
適合與不適合
- 適合:已經在用 AI 做程式審查、想讓輸出格式一致、避免嚴重度灌水的人。
- 不適合:把「檢查通過」當成「漏洞確實存在」的人。收到報告,仍要問一句:有沒有真的重現?
專案連結:https://github.com/cloudflare/security-audit-skill ,授權 MIT。