# 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 項驗證要求；三項已知限制 |
