六階段管線
六階段管線
六個階段依序執行,把漏斗從「先看懂程式碼」一路收斂到「一筆經過複查、可被機器讀取的發現」。
第 2、3、6 階段的子代理不寫檔——它們把結果交回給協調者,由協調者統一把所有產物寫進輸出資料夾。
01
偵察 Recon
3 個平行 research 代理在獵捕之前先看懂應用程式。三個代理從不同面向描繪它,再把輸出整併成 architecture.md。
architecture.md- 1a — 應用概覽、技術棧,以及可用來校準的對照基準(comparable baseline)。
- 1b — 信任邊界、認證、授權、權限分離,以及各種繞道機制。
- 1c — 鉅細靡遺列出所有「不受信任輸入進入系統」的入口。
- architecture.md 會被原樣注入每一個第 2 階段代理的 prompt。
02
獵捕 Hunt
多個平行 general 代理(可再生子代理)多個 general 代理同時攻擊程式碼,各自負責一個攻擊類別與/或子系統。它們以攻擊者的角度思考,而非審稿者。
→ findings (returned to orchestrator)- 小型函式庫 3–4 個代理;大型應用 8–12 個以上——依攻擊類別「與」子系統拆分。
- 每個 prompt 都帶上架構摘要、一個攻擊類別、起點檔案路徑、獵捕方法論與驗證規則。
- 獵人可以分叉一個聚焦的 research 子代理深入某子系統,而不必把所有東西塞進自己的 context。
03
驗證 Validate
每筆發現一個獨立 research 代理先合併重複,再由「不同的」代理嘗試「推翻」每筆發現。獵人傾向找出東西,驗證者傾向幹掉誤報。
CONFIRMED / REJECTED- 可利用性測試——讀真正的程式碼;你能構造出確切的觸發輸入嗎?
- 影響測試——攻擊者實際得到什麼?「知道欄位名稱」頂多是 LOW。
- 基準 / 緩解 / parser-runtime 測試——是否已有另一層擋住?要對照規格驗證,別憑直覺推論。
04
報告 Report
由協調者撰寫人類可讀報告兩份人類可讀文件。要短:如果報告長到超過這份程式碼所值得的篇幅,那就是在灌水。
REPORT.md · FINDINGS-DETAIL.md- REPORT.md——執行摘要、基準比較、發現表、強化建議,以及這份程式碼做得好的地方。
- FINDINGS-DETAIL.md——每筆 MEDIUM 以上發現:含 file:line 的完整資料流、確切請求、攻擊者所得。
- 點出哪裡穩固,能讓你「真正報出來」的發現更被信任。
05
結構化輸出
經 schema 驗證的 JSON每筆存活的發現轉成符合 report-schema.json 的 JSON 物件,再由 validate-findings.cjs 做結構檢查。
findings.json- 強制 additionalProperties:false——多餘欄位會讓輸出不合法。
- 若你無法用「對著原始碼驗證過的真實檔案路徑與行號」填滿 trace,代表這筆發現驗證得還不夠。
- 驗證器只做結構檢查——事實正確性是第 6 階段的工作。
06
獨立複查
每筆發現一個全新 research 代理寫出發現的代理看不見自己的盲點。一個全新的代理重讀原始碼,逐項查核每個事實主張。這是最後一道品質關卡——不可略過。
VERIFIED / CORRECTED / REJECTED- 查核每個 trace 步驟:檔案存在、行號吻合、scope(函式)正確、描述準確。
- 查核 payload 真的會生效、前提條件完整,且修補不會弄壞正常功能。
- 校準 REPORT.md 與 findings.json,讓人類報告與機器輸出永不矛盾。
多次執行會累加
沒有任何單次執行能找到全部——最好的單次執行大約只找到「多次執行可發現漏洞」的一半。後續執行會讀取先前的 findings.json,跳過已知問題,把獵捕火力對準缺口。