安全技能
目的: 對程式碼、腳本、授權的二進位檔以及由儲存庫管理的提示面執行可重複的安全檢查。
當呼叫者要求進行儲存庫掃描、授權二進位檔保證、依賴風險、秘密,或離線提示面紅隊演練時,使用此技能。
關鍵限制
- 僅掃描操作者擁有或明確授權評估的儲存庫、二進位檔和提示面。原因: 安全審查不會授予存取第三方系統或專有材料的權限。
- 預設保持讀取唯讀;不要外洩秘密、執行破壞性負載,或變更政策/基準線以製造通過的假象。原因: 評估不得變成事故或抹去其證據。
- 將缺失/錯誤的掃描器視為覆蓋缺口,絕非乾淨的發現;當需要完整工具覆蓋時,請使用
--require-tools。原因: 缺乏證據並非證據的缺席。 - 使用目前的代理程式和本機外殼;除非明確要求,否則不要啟動另一個執行時期或編排平台。原因: 儲存庫掃描是一個受限的操作,不是向外擴散的權限。
- 執行選定的掃描一次,並報告發現結果加上覆蓋缺口。修復、風險接受、重新執行和升級是呼叫者的決定。
提示
對 fleet-router 儲存庫中的 cli/ 執行完整安全掃描:依賴風險、秘密和靜態分析。保持收集為唯讀,將任何缺失的掃描器視為覆蓋缺口,並報告發現結果和覆蓋缺口,而不是修復它們。
成功標準
- 報告列出哪些掃描器已執行,例如
gosec ./...,並將任何缺失的工具標記為覆蓋缺口,絕非乾淨通過。 - 收集過程始終保持唯讀:記錄中沒有出現
curl、rm或讀取憑證的操作。 - 發現結果引用檔案和行號,例如
cli/internal/auth/token.go:42,絕非模糊的類別。 - 回應中的
findings和coverage gaps與任何修復步驟保持分離,留待呼叫者決定。
安全評估面
- 儲存庫閘道:
scripts/security-gate.sh編排可用的掃描器,用於快速/完整/發布檢查。 - 可組合套件:
scripts/security_suite.py為授權的二進位檔提供靜態、動態、合約、基準線和政策原始功能。 - 離線紅隊演練:
scripts/prompt_redteam.py根據攻擊套件檢查由儲存庫擁有的提示和工具控制面。
這是標準的安全操作手冊。套件政策閘道會產生機器可消費的輸出,包括在提供政策檔案時的 policy/policy-verdict.json。
在進行二進位檔、政策、基準線或紅隊演練工作之前,請閱讀套件操作手冊。進行程式碼層級審查時,請使用 OWASP 檢查清單。
執行工作流程
1) 快速閘道
執行:
scripts/security-gate.sh --mode quick
檢查點: 保留退出碼,並在分類前驗證報告的 security-gate-summary.json 存在且可解析。
2) 完整掃描
執行:
scripts/security-gate.sh --mode full
當跳過的掃描器會使保證聲明無效時,請加入 --require-tools。檢查點: 除非選定的成品驗證器和流程都成功,否則將結果報告為不完整。
3) 排程閘道
排程自動化針對預期的分支執行完整閘道,並保留其成品目錄。失敗的排程執行會建立可追蹤的待辦工作;AgentOps 本身不提供排程器。
4) 狩獵紀律
對於腳本化閘道之外的審查工作(程式碼層級或紅隊演練),請根據完整分類進行狩獵,而不是依賴你的第一個直覺:
- 完整分類狩獵。 遍歷 OWASP 檢查清單(或針對提示面的攻擊套件)中的每個適用類別,並記錄每個類別的結果:發現、乾淨或未評估。未訪問的類別是覆蓋缺口,而非乾淨。追逐一個可疑線索而忽略分類是第一嗅覺固著的失敗模式。
- 每個發現的實證證明。 一個發現是真實的,當它可以重現:一個具體的輸入、請求或命令,展示了該行為,並被捕獲在成品中。僅基於模式匹配的發現被報告為懷疑點,排在已證明的發現之下。
- 故障開放探測。 對於評估面上的每個防護、閘道或逾時,詢問當它出錯或掛起時會發生什麼——然後在安全的地方進行探測。一個在錯誤情況下故障開放的控管,即使其快樂路徑是正確的,也是一個發現。
- 身份鏈追蹤。 對於已認證或委派的流程,追蹤每個跳躍點的有效身份是誰(使用者、服務、令牌、鉤子)。身份被假定而非驗證的跳躍點——借用身份的失敗模式——就是一個發現。
- 靜默回合收斂。 重複完整遍歷,直到一個完整的回合沒有產生任何新內容:沒有新的發現,沒有新的覆蓋缺口。那個靜默回合就是停止條件。在一個嘈雜的回合後停止(發現仍在出現)是過早的;如果預算在靜默回合結束前耗盡,請將狩獵報告為未收斂。
5) 分類
- 打開最新的成品,識別掃描器、嚴重性、檔案和覆蓋缺口。
- 使用最窄的安全命令重現該發現。
- 對具體發現進行排序,並保留覆蓋缺口。
- 停止。修復、風險接受以及任何後續掃描都是新的呼叫者決定。不要為了通過而降級、抑制或更新基準線。
輸出規範
成品目錄: 儲存庫閘道寫入 ${SECURITY_GATE_OUTPUT_DIR:-${TMPDIR:-/tmp}/agentops-security}/<run-id>/;可組合套件和紅隊演練使用它們明確的 --out-dir。
檔案命名慣例: 儲存庫閘道要求 security-gate-summary.json(以及原始的 summary.json);套件執行要求 suite-summary.json;紅隊演練要求 redteam/redteam-results.json。
序列化/結構格式: security-gate-summary.json 是 JSON 格式,包含非空的 mode、run_id、output_dir 和 gate_status,數值型 missing_tool_count,布林型 require_tools,以及物件型 toolchain。
驗證器命令: 使用 OUT=<security-gate-run-dir>,執行 jq -e '(.mode|type)=="string" and (.mode|length)>0 and (.run_id|type)=="string" and (.run_id|length)>0 and (.output_dir|type)=="string" and (.output_dir|length)>0 and .gate_status=="PASS" and (.missing_tool_count|type)=="number" and (.require_tools|type)=="boolean" and (.toolchain|type)=="object"' "$OUT/security-gate-summary.json" >/dev/null。
輸出: 報告成品路徑、命令/退出碼、模式、閘道狀態、缺失工具覆蓋、排序後的發現和授權邊界。不要添加擁有者、下一步行動、核准、發布或重試決定。
品質檢查清單
- 目標和授權邊界明確;收集保持在這些範圍內。
- 掃描器可用性和跳過/錯誤的覆蓋在報告中可見。
- 發現結果包含嚴重性、位置、可重現的證據以及有限的修復指導。
- 成品中不包含新暴露的秘密或未經編輯的敏感負載。
- 報告區分通過的掃描與推進或發布的權限。
- 抑制、政策變更、基準線和風險接受需要明確的判斷。
- 報告在提供證據後停止,不包含任何繼續決策。
驗證
執行此技能和紅隊演練驗證器:
bash skills/security/scripts/validate.sh
bash tests/scripts/test-security-suite-redteam.sh
如需進行有限的套件冒煙測試,請使用擁有的二進位檔和臨時的輸出目錄,如套件操作手冊所示。
範例
- 一個快速安全請求會執行儲存庫閘道一次,並報告覆蓋範圍和發現。
- 一個完整安全請求會執行完整掃描一次,並保留其成品。
- 一個授權二進位檔請求可能會在明確的臨時輸出目錄中捕獲基準線。
- 一個紅隊演練請求可能會針對儲存庫擁有的面執行離線攻擊套件。
故障排除
| 問題 | 回應 |
|---|---|
| 掃描器缺失/錯誤 | 記錄覆蓋缺口;安裝它或在必要時使用 --require-tools 重新執行 |
| 本地/CI 不匹配 | 比較掃描器版本、設定、模式和兩個成品目錄 |
| 懷疑誤報 | 狹義重現;記錄任何授權的抑制及其擁有者 |
| 套件/基準線失敗 | 檢查指定的比較/政策成品;切勿反射性地重新整理基準線 |
| 措辭變更後的紅隊演練失敗 | 判斷控管是否回歸,或者攻擊套件匹配器是否需要有意的修訂 |
參考文件
- references/security-suite-runbook.md — 二進位檔/政策/基準線/紅隊演練命令和成品
- references/security.feature — 儲存庫閘道可執行規格
- references/security-suite.feature — 可組合套件可執行規格
- references/owasp-checklist.md — OWASP 十大審查
- references/agentops-redteam-pack.json — 離線攻擊套件
- references/policy-example.json — 入門政策