本卡屬 FR-177(母卡 CM-3507),第 1 棒 A1:註冊、憑證與 Agent 身分(Agent repo,6 檔/約 1336 行)。只掃不修。工作坊會用 .claude/workshop-prompts/dispatch-<本卡號>.md 當開場 prompt 直接啟動掃描,小弟不必自己打指令。

這一棒在做什麼(白話)

用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(裝在客戶機器上的那支程式,repo evidence-agent)的「註冊、憑證與 Agent 身分」這一塊,找出資安問題並寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題,修是另外開卡的事。

Agent 第一次裝好怎麼向主系統報到、拿到自己的憑證與通行證,之後憑證快到期怎麼換新,以及這些金鑰檔怎麼存在客戶機器上。

為什麼切這一塊

這一段是 Agent 身分的根。註冊 token 被撿走就能冒充客戶多一台機器;私鑰檔權限錯了,同一台機器上的其他程式就能拿去冒充這台 Agent 跟主系統講話。FR-077 掃的是主系統那一側(jedi-remote-agent),Agent 自己這一側從來沒掃過。

掃描範圍(scope,與開場 prompt 的 --scope 一致)

guidant_agent/sync/app/enroll.py
guidant_agent/sync/app/cert_renew.py
guidant_agent/sync/domain/registration.py
guidant_agent/sync/domain/agent_auth.py
guidant_agent/sync/adapters/cert_files.py
guidant_agent/platform/agent_identity.py

檔數 6、約 1336 行。驗檔數:cd <工作目錄> && git ls-files -- guidant_agent/sync/app/enroll.py guidant_agent/sync/app/cert_renew.py guidant_agent/sync/domain/registration.py guidant_agent/sync/domain/agent_auth.py guidant_agent/sync/adapters/cert_files.py guidant_agent/platform/agent_identity.py | grep '\.py$' | wc -l 應為 6。scope 外的檔不要讀(研究員會越界,越界的發現首腦驗收時會挑掉)。

重點看什麼

首腦讀過程式碼後認為最容易出事的地方,是思考起點不是檢查清單。工具不會照這份走,掃完後 runner 要自己逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。前幾輪最嚴重的發現(FR-076 L2 的 HIGH)都是 runner 照這清單追出來的,不是工具報的。

已知背景

FR-077 R1(主系統側)發現 enroll token 無到期(CM-1597,決策者裁 SaaS 前再評估),本棒看 Agent 側有沒有對應的保護;FR-077 R1b 掃過 jedi-remote-agent 的 common/agent_auth/ 密碼學核心,那是主系統驗 Agent 那一半,本棒是 Agent 驗主系統與自己簽 DPoP 這一半。兩者都未經本棒面板驗證,只是參照。