本卡屬 FR-186(Agent 本體資安掃描第二輪),第 2 批 S8:授權目標清冊與結果回報 outbox(Agent repo,6 檔/約 994 行)。只掃不修。工作坊用
.claude/workshop-prompts/dispatch-<本卡號>.md當開場 prompt 直接啟動掃描。
用 Claude Code 官方 claude-security plugin 掃 Guidant AI Agent(repo evidence-agent)的「授權目標清冊與結果回報 outbox」,找出資安問題,寫成 PM 與新手工程師都看得懂的報告。只找問題、不修問題。
FR-177 掃過(舊卡 CM-3521),之後有改動;這次重掃要回答兩件事:上次修的有沒有守住、新改的程式有沒有新洞。 範圍按業務模組垂直切(入口→流程→資料),權限漏洞常在層與層的接縫上。
guidant_agent/sync/app/allowed_targets.py
guidant_agent/sync/app/outbox.py
guidant_agent/sync/app/event_sender.py
guidant_agent/sync/adapters/outbox_repo.py
guidant_agent/sync/ports/target_authorizer.py
guidant_agent/sync/ports/result_outbox.py
檔數 6、約 994 行。驗檔數:git ls-files -- guidant_agent/sync/app/allowed_targets.py guidant_agent/sync/app/outbox.py guidant_agent/sync/app/event_sender.py guidant_agent/sync/adapters/outbox_repo.py guidant_agent/sync/ports/target_authorizer.py guidant_agent/sync/ports/result_outbox.py | grep -v /tests/ | wc -l 應為 6。scope 外的檔不要當發現報;為核對呼叫端翻範圍外的檔可以,報告標「只為查證」。
首腦標的思考起點,不是檢查清單。掃完後 runner 逐條對一遍:工具沒報的,開檔看一眼寫「人工查過:成立/不成立/為什麼」。FR-177 的人工補查抓到的問題不比工具少。(以下沿用 FR-177 舊卡的重點,行號是舊版、以檔名與函式名為準。)
allowed_targets.py:94-131 _apply/apply:清冊 payload 從 8443 指令或心跳來(A2 掃守門),這裡看內容驗證:ip_network(..., strict=False) 接受 0.0.0.0/0、::/0 嗎(接受就等於放行全部);清冊 version 沒給時用 _content_version 算——舊版本能不能覆蓋新版本(回放舊的寬鬆清冊);_persist 落地檔權限。allowed_targets.py:217-261 iter_targets/_resolve/_target_networks:目標是主機名時先 DNS 解析再比對——解析結果與 connector 實際連的是同一次解析嗎(DNS rebinding:比對時解到允許的 IP,connector 跑時解到別的);_resolve 回多個 IP 時全部都要在清冊內還是一個就過;目標字串帶 port、帶 scheme(https://host)、CIDR 形式(10.0.0.0/8 當目標)各怎麼處理,:179-199 is_allowed/check 對 CIDR 目標是「網段完全包含」還是「有交集」。allowed_targets.py:134-152 apply_names/_clean_names:主機名對照表怎麼用——名字能不能對到清冊外的 IP。outbox.py:368 行+outbox_repo.py:存 SQLite 還是檔案;單筆與總量上限(主系統斷線一週會不會塞爆磁碟);重送有 backoff 嗎、失敗幾次放棄;送出成功後刪不刪本機副本;內容有沒有過遮罩(掃描結果含目標帳號)。event_sender.py:39-68 send_event:先直送失敗才 _enqueue——_post 的例外有沒有把 payload 印進 log;kind 有沒有白名單(任何模組都能發任意 kind 的事件給主系統嗎)。ports/target_authorizer.py:介面有沒有規定「沒收到清冊要拒」,還是靠實作自律。repo_url 進清冊、#233 DNS 換綁(改成只認主系統下發的「主機名→IP」對照)——確認修法還在、沒被後來的 commit 弄回去、也沒有旁路。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 項(全部已修)。已修而且修法成立的不重報;修法不完整、或同一族換個欄位又出現,才報並註明對應項次。