本卡屬 FR-177(母卡 CM-3507),第 6 棒 A6:主控台本機登入、鎖定與 session(Agent repo,8 檔/約 1119 行)。只掃不修。工作坊會用 .claude/workshop-prompts/dispatch-<本卡號>.md 當開場 prompt 直接啟動掃描,小弟不必自己打指令。

這一棒在做什麼(白話)

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

客戶 IT 人員怎麼登進 Agent 主控台(8444):本機帳號密碼、登入失敗鎖定、登入後的 session 怎麼發與存(為了重啟不掉登入,session 會落檔)、以及維運用的一次性登入 token。

為什麼切這一塊

主控台是 Agent 上唯一有「人」操作的面,拿到它就能看證據檔、改儲存設定、發動更新。session 落檔是 FR-172 新加的(session.py:2),檔案被讀走等於拿到所有已登入的人的身分。

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

guidant_agent/identity/app/local_login.py
guidant_agent/identity/app/local_auth.py
guidant_agent/identity/app/session.py
guidant_agent/identity/app/session_file.py
guidant_agent/identity/app/credentials.py
guidant_agent/identity/domain/lockout.py
guidant_agent/identity/adapters/credential_repo.py
guidant_agent/console/api/local_auth_routes.py

檔數 8、約 1119 行。驗檔數:cd <工作目錄> && git ls-files -- guidant_agent/identity/app/local_login.py guidant_agent/identity/app/local_auth.py guidant_agent/identity/app/session.py guidant_agent/identity/app/session_file.py guidant_agent/identity/app/credentials.py guidant_agent/identity/domain/lockout.py guidant_agent/identity/adapters/credential_repo.py guidant_agent/console/api/local_auth_routes.py | grep '\.py$' | wc -l 應為 8。scope 外的檔不要讀(研究員會越界,越界的發現首腦驗收時會挑掉)。

重點看什麼

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

已知背景

FR-166 做主控台時決策者踩過「AD 分頁做成填系統帳號」(memory),本棒只看本機帳號這條。本範圍從未掃過。

怎麼做