本卡屬 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 主線為準,對不上就以內容為準。
internal_tls.sh 改用這張。或者 SSL_CERT_FILE 不併任何自簽 CA,改在 Redis 客戶端、S3 客戶端各自指定 CA 檔(兩條路回寫比較選一條、說明理由)。升級舊機要能轉過來:既有客戶機器的 Redis/SeaweedFS 憑證是 Agent CA 簽的,--upgrade 要能重產或沿用不斷線(memory「每版必須可直接升級不影響舊資料」)。REDISCLI_AUTH 環境變數(redis-cli 原生支援,不上指令列)。pki 本體整個唯讀掛;或 AGENT_CERT_DIR 指到不同主機目錄。改了掛載要一起改 installer 與升級腳本。docker-compose.yml 已 842 行超過 800 行上限:本卡只改既有行,不新增大段;如果要加新服務或大段設定,先拆出 x- 共用片段或另開 override 檔,回寫說明。test/shell/、scripts/build/test/)。cat $SSL_CERT_FILE | grep -c BEGIN 與系統 CA 數量一致(沒有 Agent CA)。--upgrade:升完 Redis/SeaweedFS 照常、既有 Agent 照常連線。ps aux | grep redis-cli 看不到密碼;後端容器內對 Agent CA 檔 touch 失敗(唯讀)。