本卡屬 FR-187(母卡 CM-3711),第 1 批 A2:設定下發與工具帳密(主系統 repo
compliance-manager-be,9 檔/約 984 行)。只掃不修。工作坊會用.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描,小弟不必自己打指令。
用 Claude Code 官方 claude-security plugin 掃「設定下發與工具帳密」這一塊,找出資安問題,寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題,修是另外開卡的事。
FR-171/181 把 Agent 拿設定的方式改成「設定一改就通知、Agent 帶版本號來拉、只回有變的類」。這一棒看主系統怎麼組這 13 類設定、送給哪幾台、工具帳密怎麼交給 Agent、離線操作者名單怎麼管。
設定裡有 LDAP 服務帳號密碼、檢測工具帳密這類祕密。組錯租戶,子公司或別家客戶的 Agent 就拿到總部的 AD 密碼;帳密要是落進資料表,查得到那張表的人就拿到全部受檢主機的密碼。
背景:這一輪掃的是 2026-11-01(FR-172 開案)到 11-09 之間主專案與 jedi-remote-agent 新寫或大改的程式(FR-171/172/178/179/180/181/182),這些程式都沒掃過。
core/plugins/_agent_config_notify.py
core/plugins/_agent_config_sections.py
app/remote_agent/service/agent_config_service.py
app/remote_agent/service/agent_command_service.py
api/remote_agent/routes/agent_config_route.py
api/remote_agent/routes/agent_credentials_route.py
infra/remote_agent/command_sources_impl.py
core/plugins/_agent_tool_credentials.py
core/plugins/_agent_offline_operators.py
檔數 9、約 984 行。驗檔數:git -C <工作目錄> ls-files -- core/plugins/_agent_config_notify.py core/plugins/_agent_config_sections.py app/remote_agent/service/agent_config_service.py app/remote_agent/service/agent_command_service.py api/remote_agent/routes/agent_config_route.py api/remote_agent/routes/agent_credentials_route.py infra/remote_agent/command_sources_impl.py core/plugins/_agent_tool_credentials.py core/plugins/_agent_offline_operators.py | wc -l 應為 9。scope 外的檔不要讀,除非下面「重點看什麼」明寫「只追這幾行」;越界的發現首腦驗收時會挑掉。
首腦讀過程式碼後認為最容易出事的地方,是思考起點不是檢查清單,行號以 2026-11-09 的主線為準,對不上就以內容為準。工具不會照這份走,掃完後你要自己逐條對一遍:工具沒報的,開檔看一眼,寫「人工查過:成立/不成立/為什麼」。
_agent_config_sections.py 每一類 section(agent):有沒有哪一類查的是全站設定而不是那台 Agent 的租戶(LDAP、離線登入政策、錯誤追蹤這類),讓子租戶的 Agent 拿到總部或別家的設定。agent_config_service.py:33-47 版本字串是用 JWT_SECRET_KEY 算的 HMAC;沒設時 str(None) 會變成空鑰匙,版本字串就退化成可以離線猜明文密碼的雜湊(:43 的註解就在講這件事)。確認正式環境不會走到空鑰匙。notify(:106-128):changes 裡租戶集合是 None 就是全部租戶的 Agent 都拉。哪些設定被標成 None,那些設定是不是真的全站共用。_agent_tool_credentials.py:44-84 設工具帳密:檔頭說帳密只在記憶體過一手,確認經 ask 送出時 payload 沒有寫進 agent_requests.payload(資料表存明文就違反「解密後的帳密只留記憶體」那條規範)。agent_credentials_route.py:憑證清單與「立即換證」掛的是租戶能力點不是平台管理員;清單回的內容有沒有通行證或憑證本體。_agent_offline_operators.py:用 user_tenants 判斷「屬於本租戶」,能不能把別家租戶的人加成這台的離線操作者。agent_command_service.py、command_sources_impl.py:直推 8443 預設關(AGENT_DIRECT_PUSH_ENABLED);開了之後的連線有沒有驗 Agent 憑證。