症狀: skill 已安裝,AI Coding Agent 卻不觸發,或審計報告充滿沒有證據的候選問題。
最快解法: 先把 security-audit-skill 放進可識別的 skill 路徑,再以最小權限、作業系統級沙箱和結構化輸出執行;它適合初步程式碼審計與重複性漏洞排查,不能取代人工複核或正式滲透測試。
這篇適合需要統一安全審計流程的技術負責人、安全工程師與後端開發者。你可以據此評估 Agent 相容性、原始碼權限、執行成本、日誌留存與人工簽核要求。
最後更新於 2026 年 9 月 21 日;資料核實自 security-audit-skill 官方 GitHub 儲存庫、SKILL.md、報告 Schema、驗證腳本與測試檔案。發布前仍應再次核對安裝指令與最近提交內容。
security-audit-skill 怎麼用:先判斷審計邊界
security-audit-skill 的定位是受控程式碼庫審計工作流,而不是「輸入一個網址便自動完成滲透測試」。官方文件確認它採用多階段審計、獨立驗證、結構化 findings 與沙箱要求;六階段流程及執行前提應以官方 README 與 SKILL.md 的最新內容為準。
你可以先把任務分成三類:
- 全量審計: 適合接手陌生程式碼庫,先建立架構、信任邊界、輸入面與涵蓋範圍,再找候選問題。
- 定向漏洞排查: 適合針對身份驗證、檔案上傳、反序列化、權限判斷等高風險路徑進行有限範圍檢查。
- 安全問答: 適合讓 Agent 解釋某段資料流或設定風險,但不能把自然語言回答直接當成已確認漏洞。
| 使用方式 | 適合情境 | 主要優點 | 不應交給它的決策 |
|---|---|---|---|
| 本機執行 | 非敏感、可完整複製的程式碼庫 | 迭代快,方便逐步調整提示與權限 | 正式上線前的唯一安全簽核 |
| 隔離開發環境 | 含建置工具、測試資料或需要執行程式碼 | 可限制檔案、網路與金鑰暴露面 | 未經審批的真實服務連線 |
| 遠端雲端 Mac 或獨立環境 | 本機資源不足、長時間任務或團隊共用審計 | 會話、日誌與權限可集中管理 | 未先定義保留期限與刪除流程 |
至於 Claude Code 和 Codex 是否都能直接支援,不能只看社群貼文下結論。你應先確認 Agent 能否載入該 skill、執行必要工具並遵守輸出格式;Claude Code 的啟動與專案使用方式可參考官方入門文件。Codex 則應以你實際採用的版本和測試結果為準,官方儲存庫未必等同於所有 Agent 的相容承諾。
安裝、觸發與權限檢查
建議你用以下順序完成首次試跑,避免「安裝成功」被誤判為「Agent 已經能用」:
- 確認執行環境。 先安裝可用的 Node.js,並從Node.js 官方下載頁取得合適版本。接著確認
node、套件執行器與 Agent 指令都能在同一個終端機工作。 - 依官方 README 加入 skill。 不要自行改寫儲存庫路徑或把檔案複製到不明的全域目錄;以官方目前提供的
skills add指令為準,因為安裝方式可能隨提交內容變更。 - 檢查 skill 路徑。 在 Agent 內要求列出已載入的 skill,確認名稱、描述與
SKILL.md都能讀取。若只在檔案系統看到資料夾,但 Agent 沒有列出它,通常是路徑、工作階段快取或代理版本不相容。 - 進入目標程式碼庫。 先確認目前工作目錄是要審計的專案根目錄,而不是包含多個專案的上層資料夾;同時檢查忽略檔案、子模組與產生檔案是否會影響涵蓋範圍。
- 用明確觸發語句。 例如要求 Agent 對目前程式碼庫執行 security-audit-skill,先完成偵察、列出 coverage ledger,再產出候選 findings。不要只輸入「幫我找漏洞」,否則很難驗證它是否真的走完整流程。
- 先限制權限再執行。 原始碼可讀不代表建置工具、瀏覽器、容器或測試資料也應開放。先關閉不必要的金鑰與外部服務連線,再逐項放行必需工具。
- 驗證輸出而非只看摘要。 使用官方的validate-findings.cjs 驗證腳本檢查結構;格式正確不等於漏洞已被證實,但格式錯誤表示還不能交付給團隊審閱。
若首次執行沒有反應,依序排查四件事:Agent 是否支援這種 skill 載入方式、目前目錄是否正確、skill 路徑是否在可讀範圍、以及工具呼叫權限是否被沙箱拒絕。這比反覆重裝更快定位原因。
審計覆蓋與誤報控制
Reconnaissance 與 coverage ledger
AI 安全審計最常見的缺口,不是完全找不到問題,而是只掃描熱門目錄,漏掉管理命令、背景工作、部署腳本或測試用身份流程。官方流程把 reconnaissance 放在前段,目的在於先理解架構、信任邊界、輸入面與資料流,再建立 coverage ledger。
你可以要求 Agent 以表格記錄每一個範圍:
| 覆蓋項目 | 脫敏範例 | 狀態 | 對後續審計的影響 |
|---|---|---|---|
| HTTP 輸入 | /api/import |
已檢視 | 追蹤檔案內容到儲存層的資料流 |
| 權限邏輯 | role-check |
部分檢視 | 需補看管理員與一般使用者分支 |
| 背景工作 | worker/export |
未檢視 | 暫不宣稱全量完成,列入下一輪 |
| 部署設定 | deploy/ |
已檢視 | 核對密鑰引用與外部服務權限 |
這個脫敏例子中,worker/export 尚未檢視,因此後續不能把「未發現問題」寫成整個專案沒有問題。coverage ledger 會直接影響審計結論的範圍,也讓人工複核知道應從哪裡接手。
發現者與驗證者分離
降低誤報的關鍵,不是要求 Agent 更肯定地寫結論,而是把「提出候選」和「證明候選」分成不同步驟。發現者可以根據資料流、權限路徑或危險 API 提出疑點;驗證者則必須檢查可達性、前置條件、實際影響與修補後結果。
官方報告結構以三種狀態區分證據成熟度:
confirmed:已有足夠證據支持問題成立,應附上位置、觸發條件與安全的重現說明。needs_validation:存在合理疑點,但仍缺少可重複的證據,不應直接列入已確認漏洞。rejected:經檢查後不成立,或屬於不適用的誤報,應保留拒絕原因供日後追蹤。
詳細欄位應對照官方 report-schema.json,而不是自行發明欄位名稱。
沙箱、最小權限與危險執行
只要審計流程會建置程式碼、啟動測試服務、開啟瀏覽器、執行模糊測試或處理不可信輸入,就不應只依賴 Agent 的提示詞限制。這些動作應放入作業系統級沙箱或獨立開發環境,並預先設定:
- 網路: 預設拒絕外連,只允許必要的套件鏡像或內部測試端點;禁止連到真實生產服務。
- 金鑰: 不把雲端憑證、部署金鑰、SSH 私鑰和個人 Token 放入審計工作階段。
- 寫入範圍: 只開放臨時工作目錄與結果目錄,禁止直接覆寫原始碼或家目錄。
- 程序權限: 不使用管理員權限;限制容器、瀏覽器、編譯器與子程序可呼叫的能力。
- 資源: 為 CPU、記憶體、磁碟與執行時間設定上限,避免錯誤測試拖垮共用環境。
- 清理: 結束後刪除暫存檔、測試帳號與下載內容,並保存必要的操作紀錄與 findings。
這也是本機設備不足時,採用雲端 Mac 租用環境或獨立開發環境的合理原因:重點不是把所有工作搬到雲端,而是把執行邊界、會話管理和資料清理集中起來。你仍需自行確認環境的權限政策、資料保留方式與團隊合規要求,可先從支援與使用說明核對操作條件。
findings.json 到可審閱報告
機器可讀的 findings.json 應是證據的中間層,而不是直接交給管理層的最終文件。轉換成 Markdown 報告時,每一項 confirmed finding 至少要能回答以下問題:
- 問題位於哪個檔案、函式或資料流?
- 哪一種輸入或權限條件會觸發?
- 驗證者觀察到什麼可重複證據?
- 影響範圍是單一測試路徑、特定角色,還是整個服務?
- 修補建議如何降低風險,是否需要補測?
- 目前結論是
confirmed、needs_validation還是rejected?
建議報告採用以下結構:
## FINDING-001:匯入流程的權限檢查不足
- 狀態:needs_validation
- 位置:src/import/handler.ts: 脫敏行號
- 影響邊界:目前只在測試角色流程觀察到
- 證據:輸入從匯入端點進入服務,但尚未完成不同角色的可重現驗證
- 安全重現:僅描述測試資料與條件,不提供攻擊真實目標的利用程式碼
- 建議:補上角色驗證,並以一般使用者與管理員測試案例重新執行
- 人工複核:待安全工程師確認
安全問題、加固建議和無法證實的候選要分開。像是缺少安全標頭,可能是加固建議;若沒有證據顯示可造成具體影響,就不應包裝成高嚴重性漏洞。嚴重性、誤報率、執行耗時與效能也不能憑印象填寫;只有官方資料或你自己的可追溯實測,才足以支撐這些數字。
官方測試檔案可用來檢查輸出行為與格式邊界,但不能因此宣稱你的專案一定能得到相同結果;可參考官方測試目錄作為驗收依據。發布前也應核對官方 SKILL.md是否已變更階段、權限或輸出要求。
本機方案與受控遠端環境
本機執行的優點是檔案不必離開你的設備、除錯速度快,適合低敏感度專案和短時間試跑;缺點是權限容易沿用個人開發環境,Shell 歷史、SSH 金鑰、瀏覽器登入狀態與其他專案也可能被意外暴露。長任務中斷後,會話與完整紀錄通常也較難由團隊接手。
受控遠端環境的優點是可把專案副本、沙箱、審計輸出與會話紀錄分開管理,適合本機資源不足或需要交接的團隊;缺點是必須額外處理原始碼上傳、資料刪除、連線政策與存取權限。若專案禁止離開內網,遠端方案就不適用;若是長期固定重負載,也應評估自購設備或內部隔離伺服器,而不是盲目按次租用。
完成本地試跑後,你可以先定義四項驗收條件:Agent 能穩定觸發、coverage ledger 可追蹤、危險工具被沙箱限制、報告能由人工重現。若本機設備無法同時滿足會話保持、日誌留存與權限隔離,再考慮使用 Kvmzen 的雲端 Mac 作為測試環境;它解決的是執行環境準備問題,不會自動替你完成安全判斷。
