本卡屬 FR-177(母卡 CM-3507),第 2 棒 A2:資料面 8443 與主系統下達的指令(Agent repo,11 檔/約 1038 行)。只掃不修。工作坊會用
.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描,小弟不必自己打指令。
用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(裝在客戶機器上的那支程式,repo evidence-agent)的「資料面 8443 與主系統下達的指令」這一塊,找出資安問題並寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題,修是另外開卡的事。
主系統主動連到 Agent 的 8443 下指令(派任務、改設定、改帳密、重啟、更新),Agent 怎麼驗「這真的是主系統」、哪些路徑不用驗,以及 Agent 怎麼決定信任哪一台主系統。
8443 是客戶內網裡一個會收指令並照做的服務。守門殼漏一條路徑,內網任何一台被入侵的機器就能叫 Agent 去掃別人、改設定、改掉工具帳密。memory 記過「主系統本來就能直連 8443」,表示這條路是常態在用的。
guidant_agent/sync/api
guidant_agent/sync/domain/agent_auth.py
guidant_agent/sync/app/cloud_trust.py
guidant_agent/sync/app/task_queue.py
檔數 11、約 1038 行。驗檔數:cd <工作目錄> && git ls-files -- guidant_agent/sync/api guidant_agent/sync/domain/agent_auth.py guidant_agent/sync/app/cloud_trust.py guidant_agent/sync/app/task_queue.py | grep '\.py$' | wc -l 應為 11。scope 外的檔不要讀(研究員會越界,越界的發現首腦驗收時會挑掉)。
首腦讀過程式碼後認為最容易出事的地方,是思考起點不是檢查清單。工具不會照這份走,掃完後 runner 要自己逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。前幾輪最嚴重的發現(FR-076 L2 的 HIGH)都是 runner 照這清單追出來的,不是工具報的。
data_plane_auth.py:46-47 _skips_jwt:公開路徑清單 _is_public 有哪些;LOCAL_OPS_PREFIX 加 loopback 判定用的是 request.remote_addr——跑在容器裡、前面有反向代理時 remote_addr 是不是永遠 127.0.0.1,等於整組維運端點對內網開放。data_plane_auth.py:79-92 守門是 before_request 掛上去的——哪些 blueprint 掛在同一個 app、有沒有後來才掛的 blueprint 漏在外面;mode 不是 full 時會變成什麼。agent_auth.py:221-238 verify_data_plane_jwt:audience/issuer/bound_fp 全部有驗嗎;token 沒有 exp 會不會過;重放(同一個 token 打兩次)擋不擋。cmd_*.py:各自收什麼參數、直接進哪支 app service。重點 cmd_credentials.py(改工具帳密,改完存哪)、cmd_config.py(能改哪些 key,能不能改到 allow_cidr 或 cloud_base_url 之類會改變信任邊界的設定)、cmd_restart.py(會不會被當 DoS)。cloud_trust.py:Agent 怎麼決定信任哪個主系統(CA pin、指紋);信任錨能不能被 8443 指令自己改掉(自己換自己的老闆)。task_queue.py:任務內容(含目標主機、帳密)進隊列前有沒有驗 schema;隊列落地檔的權限。data_plane_server.py:TLS 設定——最低版本、是否要求 client cert(mTLS)、ssl_context 哪裡建。FR-077 R2a/R2b 掃的是主系統控制面「收 Agent 請求」那一側(CM-1595 控制面不驗身分,已修)。本棒是反方向:Agent 收主系統請求。本範圍從未掃過。