Project

General

Profile

CR #240 » CR-039_覆寫lz4版本以修補MODERATE.md

內容更新:內部稱謂去識別化(2026-10-18) - Redmine Admin, 10/18/2026 05:32 AM

 

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. 已知限制(誠實揭露)

  1. lz4-java 為 Kafka 之壓縮相依——本 CR 只改版本,未做 Kafka 壓縮之功能回歸
    (未以 LZ4 壓縮之訊息端到端驗證);以「全量測試 + 服務啟動」為證。
  2. 前端漏洞不在本 CR 範圍(另立 CR-040)。
  3. BOM 覆寫僅作用於本 repo 之複合建置。

6. 修訂記錄

版本 日期 修訂內容
1.0 2026-10-05 初版:診斷 1 個 MODERATE;查證 5 項(★ 確認不在 BOM 內 → 機制 A);裁定 1.10.1 → 1.11.4;訂定 6 項驗證要求;三項已知限制
    (1-1/1)