CR-039 覆寫 lz4-java 版本(修補 1 個 MODERATE)——後端漏洞歸零
| 項目 |
內容 |
| 文件編號 |
CR-039 |
| 版本 |
1.0 |
| 狀態 |
✅ 已裁定並執行 |
| 提出日 |
2026-10-05 |
| 提出者 |
WorkBuddy AI(開發團隊) |
| 緣起 |
#A-160 掃描之最後一筆後端命中;BEAM PMO:「請接著把…lz4 那 1 個 MODERATE 依序處理掉」 |
| 前案 |
CR-037(Tomcat,機制 A)/CR-038(Jackson,機制 B) |
| 關聯 |
CSP-006 §2.14(新增第 4 列)、CSP-005 §4.3
|
| 嚴重度 |
🟡 低—中——完成後後端漏洞歸零(CRITICAL 0/HIGH 0/MODERATE 0) |
1. 問題
at.yawk.lz4:lz4-java:1.10.1(MODERATE)——原生 XXHash 實作可致 JVM 崩潰;
OSV 標示修復版本 1.11.1。
2. 查證(version-compat-verification 紀律;2026-10-05 實查)
| # |
查證項 |
方法 |
結果 |
| 1 |
★ 是否為 BOM 家族成員?
|
於 Spring Boot 4.1.1 BOM 之 POM 搜尋 lz4-java
|
❌ 0 筆——不在 BOM 內
|
| 2 |
那它從哪來? |
classpath 相依列舉 |
Kafka client(kafka-clients)之傳遞相依(Kafka 之壓縮支援) |
| 3 |
目標版本是否存在 |
Maven Central metadata + POM HTTP 200 |
✅ 1.11.1 存在;1.11 線最新為 1.11.4(POM 200) |
| 4 |
是否同 minor 之 patch |
版本比對 |
✅ 1.10.1 → 1.11.4 為同 minor 內之 patch(1.10→1.11 為 minor,非 major;無 API 破壞) |
| 5 |
classpath 上之 lz4 件數 |
相依列舉 |
恰 1 件(at.yawk.lz4:lz4-java) |
3. 裁定
| 項目 |
內容 |
| 目標版本 |
1.11.4(1.11 線之最新修補版) |
| 機制 |
★ 機制 A:逐個 artifact constraint(CSP-006 §2.14.1) |
| 版本來源 |
backend/gradle/libs.versions.toml 之 lz4
|
| 範圍 |
backend/build.gradle.kts 之 subprojects {}——★ 產生器模板同步
|
3.1 ★ 為何是機制 A 而非 B
lz4-java 不在 Spring Boot BOM 內(查證 #1)——它是 Kafka 之傳遞相依。
「BOM 家族成員」是機制 B 之判準(CSP-006 §2.14.1);本案不屬任何 BOM 家族,
且 classpath 上恰 1 件 → 機制 A(逐一列出不會漏)。
★ 與 CR-037(Tomcat)同型:獨立、件數少 → 機制 A。
與 CR-038(Jackson)不同:BOM 大家族、20+ 件 → 機制 B。
4. 驗證要求(CSP-006 §5.2)
| # |
驗證項 |
通過標準 |
| 1 |
實際解析版本 |
lz4-java 為 1.11.4(以 Gradle 實查) |
| 2 |
編譯 |
全庫 compileJava + compileTestJava 通過 |
| 3 |
全量測試 |
維持 0 失敗(基線:1096 測/1 略過) |
| 4 |
執行期啟動 |
服務可啟動、/actuator/health 回 200 |
| 5 |
漏洞歸零 |
★ 後端 CRITICAL/HIGH/MODERATE 全為 0
|
| 6 |
未破壞其他相依 |
相依清單僅 lz4 一行變動
|
5. 已知限制(誠實揭露)
-
lz4-java 為 Kafka 之壓縮相依——本 CR 只改版本,未做 Kafka 壓縮之功能回歸
(未以 LZ4 壓縮之訊息端到端驗證);以「全量測試 + 服務啟動」為證。
-
前端漏洞不在本 CR 範圍(另立
CR-040)。
-
BOM 覆寫僅作用於本 repo 之複合建置。
6. 修訂記錄
| 版本 |
日期 |
修訂內容 |
| 1.0 |
2026-10-05 |
初版:診斷 1 個 MODERATE;查證 5 項(★ 確認不在 BOM 內 → 機制 A);裁定 1.10.1 → 1.11.4;訂定 6 項驗證要求;三項已知限制 |