本卡屬 FR-186(Agent 本體資安掃描第二輪),第 1 批 S7:簽章驗證核心、啟動完整性閘、漏洞庫同步(Agent repo,8 檔/約 1047 行)。只掃不修。工作坊用
.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描。
用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(repo evidence-agent)的「簽章驗證核心、啟動完整性閘、漏洞庫同步」,找出資安問題,寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題。
FR-177 掃過(舊卡 CM-3512),之後有改動;這次重掃要回答兩件事:上次修的有沒有守住、新改的程式有沒有新洞。 範圍按業務模組垂直切(入口→流程→資料),權限漏洞常在層與層的接縫上。
guidant_agent/sync/app/vulndb_sync.py
guidant_agent/sync/app/vulndb_bundle.py
common/integrity/__init__.py
common/integrity/public_keys.py
common/integrity/startup_gate.py
common/integrity/verify.py
main_app.py
guidant_agent/platform/agent_tree_verify.py
檔數 8、約 1047 行。驗檔數:git ls-files -- guidant_agent/sync/app/vulndb_sync.py guidant_agent/sync/app/vulndb_bundle.py common/integrity/__init__.py common/integrity/public_keys.py common/integrity/startup_gate.py common/integrity/verify.py main_app.py guidant_agent/platform/agent_tree_verify.py | grep -v /tests/ | wc -l 應為 8。scope 外的檔不要當發現報;為核對呼叫端翻範圍外的檔可以,報告標「只為查證」。
首腦標的思考起點,不是檢查清單。掃完後 runner 逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。FR-177 的人工補查抓到的問題不比工具少。(以下沿用 FR-177 舊卡的重點,行號是舊版、以檔名與函式名為準。)
verify.py:61-81 _lookup_public_key:公鑰除了編譯進 binary 的 PUBLIC_KEYS,:81 還會從檔案 load_pem_public_key——哪個目錄、誰能寫?能放一把自己的公鑰進去就能簽任何東西。對照 FR-076 L1「三環境硬編公鑰」與 FR-084 T1-2。verify.py:114-152 verify_payload:alg 欄位是信封自帶的——有沒有限定只能是 Ed25519;canonical 怎麼序列化(JSON key 排序、浮點、Unicode),簽章前後兩邊算法一致嗎;expected_type 不符時是拒絕還是警告。startup_gate.py:105 環境變數 _ENV_FORCE 與 :55-58 的覆寫路徑:測試用的「指向 /tmp 假產物」覆寫在正式包裡關掉了沒;:24 寫「刪掉 manifest 是最便宜的繞法,不擋等於整道 gate 不存在」——實際有擋嗎。gate 失敗是拒啟還是記 log 繼續。vulndb_bundle.py:79-94 _extract_stream 自己寫的 tar 解壓(沒用 archive_safety):member 路徑有沒有擋 ../絕對路徑/symlink;member.size 與實際寫入量對不對(tar 標頭可以說謊)。vulndb_bundle.py:135-172:先驗 manifest 簽章、再逐檔對 sha256——manifest 裡沒列到的多餘檔案會不會也落地;staging 目錄換正式目錄是不是原子的。vulndb_sync.py:從哪下載、多久拉一次、版本倒退要不要擋;下載失敗時會不會把舊庫刪了(可用性)。public_keys.py:幾把、對應哪些環境(dev/stg/prod);dev 鑰有沒有跟著正式包出貨。FR-177 25 棒報告在 Agent repo docs/security-scan/FR-177/scan-*.md,已登記的 22 條在主系統 repo docs/features/security-scan-consolidated/README.md §3.1 第 219~240 項(全部已修)。已修而且修法成立的不重報;修法不完整、或同一族換個欄位又出現,才報並註明對應項次。