本卡屬 FR-186(Agent 本體資安掃描第二輪),第 4 批 P2:稽核與系統日誌、模組登記(Agent repo,8 檔/約 1035 行)。只掃不修。工作坊用
.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描。
用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(repo evidence-agent)的「稽核與系統日誌、模組登記」,找出資安問題,寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題。
FR-177 掃過(舊卡 CM-3523),之後有改動;這次重掃要回答兩件事:上次修的有沒有守住、新改的程式有沒有新洞。 範圍按業務模組垂直切(入口→流程→資料),權限漏洞常在層與層的接縫上。
guidant_agent/platform/audit_log.py
guidant_agent/platform/audit_pipeline.py
guidant_agent/platform/audit_import.py
guidant_agent/platform/local_db
guidant_agent/shared/audit.py
guidant_agent/platform/registry.py
檔數 8、約 1035 行。驗檔數:git ls-files -- guidant_agent/platform/audit_log.py guidant_agent/platform/audit_pipeline.py guidant_agent/platform/audit_import.py guidant_agent/platform/local_db guidant_agent/shared/audit.py guidant_agent/platform/registry.py | grep -v /tests/ | wc -l 應為 8。scope 外的檔不要當發現報;為核對呼叫端翻範圍外的檔可以,報告標「只為查證」。
首腦標的思考起點,不是檢查清單。掃完後 runner 逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。FR-177 的人工補查抓到的問題不比工具少。(以下沿用 FR-177 舊卡的重點,行號是舊版、以檔名與函式名為準。)
fingerprint.py+host_identity.py:3-27:device_uuid 由 product_uuid/machine_id 算——兩個來源都讀不到時退到什麼(memory 記過舊版退到 MAC 會漂移);DEFAULT_MACHINE_ID_PATH 能不能被環境變數換成任意檔(換成攻擊者控制的檔就能指定 device_uuid 冒充另一台);容器內 /etc/machine-id 是 bind mount 主機的還是容器自己的(重建就變)。support_bundle.py:104-117 redacted_settings:只遍歷 _ENV_PREFIXES 開頭的 env——清單外的 env 不進包,好;清單內的 _SECRET_NAME 正則抓哪些字(PASSWORD、SECRET、TOKEN、KEY?DSN/URL 內嵌密碼呢);_NOT_SECRET 白名單有誰;:85 _journal_tail 從 journald 撈的內容過不過 mask_text;:119 recent_diagnostics 的網診報告含內網拓撲,要出去嗎;:166 排除清單寫了三項,實際 build 有沒有讀到 allowed_targets 的落地檔或 secrets/ 目錄。secret_store.py:87-107 _read_key(create=True):金鑰檔建立的權限(open 再 chmod?同 A1 M1 的病)、:107 權限不對只 warning 不拒用;Fernet 金鑰與密文同目錄的設計取捨要寫明(防的是什麼、不防什麼)。ops.py:244 行+local_ops.py:request_restart(mode, reason, actor, note) 的 note 進 log/稽核時有沒有長度上限與遮罩;local_ops 的 loopback 端點(A2 掃了 _skips_jwt 判定)各自能做什麼——有沒有能改設定、讀祕密、觸發更新的;容器內「loopback」是不是等於「同 pod 任何行程」。local_state_cli.py:149 行 維運 CLI:有哪些子命令、哪些會印出祕密(memory:不給客戶印明文密碼的 CLI,guidant credentials 已移除);reset-admin-password 這條路的守門是「能跑 CLI=root」嗎。audit_log.py/audit_pipeline.py/audit_import.py:稽核事件寫 system_logs 時有沒有過遮罩(A6 第一期看到 audit(... first_time=...) 只記旗標,這裡看全部 audit() 呼叫的 kwargs 有沒有帶密碼、token、檔案路徑);audit_import.py 匯入舊檔的格式驗證、匯入會不會覆蓋既有紀錄(稽核不可竄改)。agent_tree_verify.py(38 行):verify-tree 子命令——A3 說主機升級時用現行版驗新版就是叫它,看它吃的路徑參數有沒有限制(能驗任意目錄是否無害)、輸出的版號從哪來。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 項(全部已修)。已修而且修法成立的不重報;修法不完整、或同一族換個欄位又出現,才報並註明對應項次。