本卡屬 FR-186(Agent 本體資安掃描第二輪),第 1 批 S2:主系統通道、信任錨、憑證換發、設定拉取(Agent repo,8 檔/約 1029 行)。只掃不修。工作坊用
.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描。
用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(repo evidence-agent)的「主系統通道、信任錨、憑證換發、設定拉取」,找出資安問題,寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題。
FR-177 掃過(舊卡 CM-3522),之後有改動;這次重掃要回答兩件事:上次修的有沒有守住、新改的程式有沒有新洞。 範圍按業務模組垂直切(入口→流程→資料),權限漏洞常在層與層的接縫上。
guidant_agent/sync/app/cert_renew.py
guidant_agent/sync/app/cloud_trust.py
guidant_agent/sync/ports/cloud_trust.py
guidant_agent/sync/adapters/cloud_channel.py
guidant_agent/sync/adapters/cloud_http.py
guidant_agent/sync/ports/cloud_channel.py
guidant_agent/sync/app/agent_status.py
guidant_agent/sync/app/config_pull.py
檔數 8、約 1029 行。驗檔數:git ls-files -- guidant_agent/sync/app/cert_renew.py guidant_agent/sync/app/cloud_trust.py guidant_agent/sync/ports/cloud_trust.py guidant_agent/sync/adapters/cloud_channel.py guidant_agent/sync/adapters/cloud_http.py guidant_agent/sync/ports/cloud_channel.py guidant_agent/sync/app/agent_status.py guidant_agent/sync/app/config_pull.py | grep -v /tests/ | wc -l 應為 8。scope 外的檔不要當發現報;為核對呼叫端翻範圍外的檔可以,報告標「只為查證」。
首腦標的思考起點,不是檢查清單。掃完後 runner 逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。FR-177 的人工補查抓到的問題不比工具少。(以下沿用 FR-177 舊卡的重點,行號是舊版、以檔名與函式名為準。)
cloud_http.py:26-29 cloud_tls_verify 從 RootContainer.sync.cloud_trust() 拿——第一期 A1 已核 cloud_trust.py:49-66 沒有回 False 的路;這裡看 :49-75 request/stream 有沒有別的參數能覆寫 verify、timeout 預設多少、重導向(follow_redirects)開不開——開了就可能被 3xx 導到 http 或別的主機。:37 auth_headers 的 DPoP 標頭 url 用的是完整 URL 還是 path(DPoP 綁 URL,拼錯等於沒綁)。config_pull.py:50-135 bind(appliers)/_apply:列出全部 appliers 的 kind(grep config_pull.request(/appliers[),逐個問「主系統改這個會動到哪道門」——console_allow_cidr(A7 在看 intersect 只能收窄)、allowed_targets(B6a)、offline_operators(A7)、file_protect、agent_name;_apply 套用失敗是整批回滾還是套一半;versions 比對能不能被回放舊版。agent_status.py:心跳送出的狀態欄位有哪些(對照 B3 heartbeat.fields() 加進來的)——有沒有內網 IP、主機名、磁碟路徑這類拓撲資訊(memory:FR-166 總覽吐內網拓撲)。tool_schemas.py:工具參數 schema 從主系統拉——schema 裡的 default/options 會不會被 connector 當成可信值直接拼進指令(第三期 connectors 對照);schema 有沒有簽章或只靠通道。keys_view.py:38 不驗簽解 control_token 顯示——同 A1 核過的 :206 一樣只是顯示用,確認回給主控台的欄位有沒有 token 本體。console_ticket.py(10 行)、file_protect_sync.py:主控台票券驗證入口委派給 agent_auth.verify_console_ticket(A1 已掃),這裡只看呼叫端給的 agent_uid 來源;下載加密設定從主系統同步——能不能被設成「不加密」。sync/__init__.py:175 行 模組註冊:services() 持有的狀態、背景元件(config_pull 的 thread)由 platform 統一起停嗎。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 項(全部已修)。已修而且修法成立的不重報;修法不完整、或同一族換個欄位又出現,才報並註明對應項次。