本卡屬 FR-188(母卡 CM-3728),修 FR-187 資安掃描發現的 #254(中,3:0;落地版預設就打得到)、#257(低)、#258(低)。嚴重度:中×1+低×2。發現原文、檔名行號、面板票數在 docs/features/FR-187-2611-post-fr172-security-scan/reports/(工作坊工作區 compliance-manager-be/.worktrees/CM-3711/ 裡,主線還沒合;總表 docs/features/security-scan-consolidated/README.md §3.1 同樣在那裡)。Stage 未排,由排批的人決定(見下方「排批注意」)。

問題是什麼(白話)

#254:主系統開機時把 /etc/guidant/internal-ca.crt 併進 SSL_CERT_FILE(整個程式的 HTTPS 信任庫),本意只是讓主系統相信 Redis、SeaweedFS 這些內部服務的憑證。但這張檔就是 Agent 憑證中心,而它會照 Agent 註冊時自填的網址簽任意網域的伺服器證書(SEC-3 的 #249 那一半)。結果:持任一註冊碼的人填 https://api.anthropic.com 註冊,就拿到一張主系統會相信的證書,再當網路中間人(DNS 汙染、被入侵的網路設備),就能冒充 AI 服務、郵件伺服器、S3,收走 AI 金鑰、郵件密碼、物件儲存密鑰。不需要直推開關。

#257:Redis 健康檢查每 5 秒執行 redis-cli ... --pass "$REDIS_PASSWORD",主機上任何帳號 ps 都看得到全權密碼(主機沒開 hidepid 時)。

#258:compose 把 ${GUIDANT_DATA_DIR}/pki 可寫掛到 /opt/guidant/pki(防竄改標記要寫),又把 ${AGENT_CERT_DIR} 唯讀掛進來,但 installer 設的 AGENT_CERT_DIR=${GUIDANT_DATA_DIR}/pki=同一個主機目錄,所以「唯讀」形同虛設,攻破任一顆後端容器就能換掉 Agent CA 或簽票鑰匙。

在哪裡

/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/docker/production/entrypoint.sh:44-51  INTERNAL_CA 併進 SSL_CERT_FILE
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/scripts/installer/internal_tls.sh:13  internal-ca.crt 複製自 pki/agent/ca.crt
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/docker/production/docker-compose.yml:256  internal-ca.crt 掛入
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/docker/production/docker-compose.yml:421  redis healthcheck --pass
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/docker/production/docker-compose.yml:221/243  pki 可寫掛+AGENT_CERT_DIR 唯讀掛(同一目錄)
/Users/chouraymond/Projects/Billows/Audit-Manager/compliance-manager-be/scripts/installer/install.sh:1410  AGENT_CERT_DIR=${GUIDANT_DATA_DIR}/pki

行號以 2026-11-09 主線為準,對不上就以內容為準。

怎麼修

要寫測試

手測