本卡為 FR-128 母案。讓四顆出貨 docker image 用 Trivy 掃出 Critical=0、發行版已有修正的漏洞全清,並把 CI 掃描換成 Trivy+Grype 雙掃守住每一版。分五棒實作。子卡清單在末段。

這系列在做什麼(白話)

我們交給客戶的安裝包裡有四顆 docker image(後端、前端、資料庫初始化、證據分類沙箱)。客戶會自己拿掃描工具檢查這四顆,要求最嚴重等級(Critical)的漏洞一條都不能有。這個案子做兩件事:一是把現在掃得到的 6 條 Critical 和 128 條「已經有修正版可升」的漏洞全部清掉;二是把 CI(自動 build 流程)裡的掃描工具換成客戶會用的那一套,以後每出一版都自動檢查,有 Critical 就不准出包。

為什麼要做

首腦讀完後的重點:六個 Critical 的根因

image          套件                        根因                                                    子卡
be             concurrent-ruby、net-imap   CINC Auditor 7.1.7 內嵌舊 Ruby gem                      .2
classifier     libxml2-dev、linux-libc-dev build-essential 與 -dev 開發套件留在 runtime image      .3
classifier     libxml2 2.9.14              Debian 13 標 no-fix;Ubuntu 22.04 不受影響               .4
init           Go stdlib 1.24.6            postgres:16-alpine digest 釘死,內含舊 Go 工具           .1

可修 128 條從哪來

來源                                           條數   子卡
CINC Auditor 內嵌 Ruby gem                       24   .2
四顆 image 的 OS 套件(libssl3/libc6/python3 等)  37   .1
init 的 Go stdlib(postgres image 內)            46   .1
classifier pip/setuptools/wheel/jaraco        9   .3

怎麼拆

執行順序:.1 → .3 → .2 → .5 → .4。序列組:.3 與 .4 動同一支 classifier Dockerfile,不可平行;.1 也動該檔第 7 行 FROM,要先於 .3。.2 與 .3 檔案不重疊,.1 完成後可平行。

收口驗收(全部子卡完成後)