Guidant AI v1.25.1 Release Note¶
| 項目 | 內容 |
|---|---|
| 版本 | 1.25.1(BUG 版號;主軸=出貨 image 弱點處理:基底換 Ubuntu 24.04、LibreOffice 改官方版、安裝包附的第三方 image 升級) |
| 發布日期 | 2026-10-06 |
| 上一版本 | 1.25.0(2026-10-05) |
| 涵蓋區間 | BE v1.25.0..本版進版 commit;FE 無程式改動(版號對齊);檔案 Agent 隨本版改 Dockerfile 與工具包,Agent 本身另由出包線出版 |
| 涵蓋需求 | FR-131 出貨 image 弱點處理(CM-2507 母卡、CM-2508 討論稿、CM-2509 實作) |
| 規模 | 無 DB migration、無 Python 套件升版、無 API 變動;改 image 基底與內容、安裝包第三方 image 版本、安裝程式兩項修正 |
| 適用部署 | 188 出包後部署 190 e2e 驗;STG/POC 待決策者放行 |
為什麼是 BUG 版號:使用者看不到新功能,行為不變;改的是交付的 image 內容與安裝程式。
0. 發版前回歸 gate¶
出包後部署 190 e2e,site-regression core 對 190 跑(結果待回填)。
1. 概述¶
客戶驗收會拿 Trivy 不帶參數掃交付的 image。1.25.0 已做到零 Critical,但總數仍多:自家四顆合計 233 條、檔案 Agent 449 條;安裝包另附的資料庫、快取、物件儲存三顆從沒掃過,合計 790 條(其中 Critical 22 條)。
本版照風險等級處理,不設數量目標:能修的修、用不到的拿掉、拿不掉的逐條寫明理由揭露。結果:我們自己 build 的 image Critical 與 High 全部是 0,剩下的全是 Ubuntu 官方還沒出修正的 Medium/Low。
2. 出貨 image 改了什麼(FR-131)¶
| image | 改了什麼 | Trivy(1.25.0 → 本版) |
|---|---|---|
| 證據分類沙箱(classifier) | 基底 Ubuntu 22.04 → 24.04;Python 改 deadsnakes 3.13;出貨段拿掉 pip;LibreOffice 改官方 25.8.7 版並刪掉它自帶的 Python | 179 → 28 |
| 後端(be) | 基底換 24.04;LibreOffice 同上;CINC Auditor 改 24.04 版;清掉 CINC 內建的 Ruby json 舊檔 | 54 → 29 |
| 前端(fe)、資料庫初始化(init) | 未動 | 0 → 0 |
| 檔案 Agent(容器版) | 基底換 24.04;LibreOffice 改用 image 內的系統庫並刪自帶 Python;sonar-scanner 7.3 → 8.1;清 Ruby json 舊檔 | 449 → 32(隨 Agent 下一版出貨) |
三顆共同:
- LibreOffice 安裝檔在 build 時下載並驗 sha256,正式 build 腳本不必另外準備檔案。
- LibreOffice 自帶的 Python 刪掉:只有 Grype 看得到,報 10 條 High;產品只走 soffice 命令列轉檔,用不到它。
- 建帳號後清空子帳號範圍設定(/etc/subuid、/etc/subgid)。
剩下的弱點逐條(CVE、Ubuntu 修補狀態、處理方式、對應 CISA VEX 類別的理由)見 docs/features/FR-131-2610-image-vulns-to-single-digit/scan/2026-10-06-remaining-vulns.md。
掃描器看不到的部分(必須揭露)¶
- classifier 的 Python 3.13:Ubuntu 24.04 官方沒出 3.13,漏洞資料庫沒有它的紀錄,Trivy 永遠報 0。
- 三顆的官方版 LibreOffice 25.8.7:解開放進
/opt,沒登記在 Ubuntu 套件清單。 - 後端與 Agent 的 Nuitka 執行檔(同 1.25.0)。
SBOM 要寫明這些版本,每次發版追官方安全公告。
3. 安裝包附的第三方 image¶
| image | 1.25.0 | 本版 | Trivy |
|---|---|---|---|
| redis | 7-alpine | 8-alpine | 46 → 0 |
| seaweedfs(物件儲存,後端與 Agent 共用) | 3.99 | 4.48 | 198 → 2 |
| postgres | 16(2026-08 取得) | 16(2026-10-06 取得) | 546 → 342(Critical 14 → 2) |
- 三顆都在出包腳本裡釘 digest:出包前比對 build 機上那個 tag 的 digest,不是釘定的那一顆就不出包。compose 照舊寫
name:tag(docker save/load 會丟掉 digest,寫在 compose 會讓 air-gap 安裝找不到 image)。 - 第三方 image 只揭露、不擋出包。
- postgres 不換 alpine:現有資料庫排序規則是 glibc 的
en_US.utf8,換成 alpine(musl)文字索引會對不上,屬資料庫遷移,另案。 - seaweedfs 3.99 → 4.48 已實測:3.99 寫入的資料 4.48 讀得到、內容一致;Agent 用的防竄改保存(Object Lock)全項通過,且 3.99「桶裡有鎖住的檔案仍能整桶刪除」的缺口在 4.48 已修。
- redis 8 已實測:正式 ACL/TLS 設定原樣起,四個帳號 20 項指令與 7 版結果相同。
4. 安裝程式修正¶
| 問題 | 影響 | 修法 |
|---|---|---|
| seaweedfs 4.x 對已存在的 bucket,建立指令回錯誤碼(3.99 回 0) | 安裝程式照退出碼判斷,重跑安裝與升級會直接失敗 | 改以 bucket 清單讀回確認(3.99、4.x 的清單格式都認) |
guidantai rotate-credentials 換 redis 密碼後,舊密碼照樣能登入 |
換密碼等於沒換(redis 7、8 都一樣,原本就有的缺口) | ACL SETUSER 加 resetpass;換完舊密碼被拒,失敗回滾也正確 |
5. 升級須知¶
- 升級照常
install.sh --upgrade。redis 與 seaweedfs 的容器會換成新版 image;seaweedfs 資料沿用原 volume。 - 證據分類服務的 image 名稱仍是
evidence-classifier:1.6.2(套件版號未升),但內容已換成 24.04 版。升級時docker load會把同一個名稱指到新內容、compose 依 image ID 重建容器,不需額外操作。 - 升級後建議跑一次
guidantai rotate-credentials:舊版換過的 redis 密碼,舊的那組其實仍有效,重換一次才會真正失效。
6. Breaking Changes¶
無。
7. DB Migration¶
無。
8. 相依套件版本¶
Python 套件與 1.25.0 相同。jedi-evidence-classification 仍為 1.6.2(docker 目錄內容改了,套件程式碼未改、未發版)。
image 基底:be ubuntu:24.04、classifier ubuntu:24.04(deadsnakes Python 3.13)、init postgres:16-alpine、fe nginx alpine,皆釘 digest。第三方:postgres:16、redis:8-alpine、chrislusf/seaweedfs:4.48,於出包腳本釘 digest。
本版 SBOM 與弱點比對結果¶
數字待 CI package job 的 vuln-summary.md 回填;以下為 188 以正式 build 腳本建出最終 image 的實測:
- Python 層(pip-audit):待回填
- OS 層(Trivy):四顆 image Critical 0/High 0/可修 0(classifier 28、be 29、fe 0、init 0,全為 Medium/Low);Grype 第二意見 Critical 0、High 0;白名單豁免 0 條(白名單只剩檔案 Agent 一條,理由與到期日見
scripts/build/vuln-allowlist.txt) - 本版修掉:四顆合計 233 → 57(High 8 → 0);可修 7 → 0
9. 部署順序¶
- 188 build 機:
/opt/guidant-ai-be、/opt/guidant-ai-fe跟main;/opt/jedi-python-package由 pipeline 拉main(classifier 改動已在 main)。先df -h /與pgrep -f 'nuitka|build_all'。 - pipeline 完整出包;看 package 段的弱點摘要與「第三方 image 皆為釘定版本(3 顆)」。
- 部署 190 e2e 驗:
- 上傳一份 docx 證據跑分類、匯出一份 SSP PDF、產一份摘要報告 PDF(這項在 188 沒有資料可測,要在這裡補驗),中文都正常
- 升級前已存在的證據檔仍開得起來(seaweedfs 3.99 → 4.48)
guidantai rotate-credentials跑一次,確認舊 redis 密碼登不進去- STG(188)、POC(189):等決策者放行。
- 檔案 Agent:本版的 Dockerfile 與工具包改動要隨 Agent 下一版出貨(新骨架需 License Center 簽章),由 Agent 出包線處理。
10. 已知限制與 follow-up(不擋本版)¶
- postgres 換 alpine(342 → 約 46):排序規則與 805 個索引,需資料庫遷移流程。
- Agent 原生安裝版的系統庫採集:仍從 debian:11 採集,debian-security 已下架部分檔案,重抓工具包時會失敗;白名單的 krb5 豁免 2026-12-31 到期。
- sonar-scanner 自帶 Java 21.0.9:Grype 6 條 High(Trivy 看不到),等 sonar-scanner 出新版。
- jedi-evidence-classification 版號未升:image 同名不同內容,追溯上要看出包日期;下次套件發版時一併升。
- 剩餘弱點每月重新 build 吃 Ubuntu 修正、追上游(pcre2、libXrender 等 7 個上游已修的 CVE)的流程未建。
- 弱點關卡仍只擋 Critical(決策者裁維持)。
11. 相關文件¶
- Notion:母卡 CM-2507、CM-2508(討論稿)、CM-2509(實作)
docs/features/FR-131-2610-image-vulns-to-single-digit/(證據頁scan/2026-10-06-remaining-vulns.md、交接handoff/FR-131-STATE.md)- 白名單:
scripts/build/vuln-allowlist.txt