Oracle 2026 年 10 月 Critical Patch Update 完整公告已出,OpenJDK 同步放出了 27.0.1+9。生产环境该按公告里的版本把 JDK 基线升上去;下文用 com.sun.net.httpserver.HttpServer 打出的 Host 校验,只是发布说明里一条能当场复现的公开行为变化。Spring Boot 默认的嵌入式 Tomcat 并不走这条路径。
对照本机还没打这轮 CPU 的 JDK 21.0.12.1:27.0.1 上缺 Host 或多 Host 会回 400 Bad Request,同一段探测代码在 21.0.12.1 上三个用例都还是 200 OK。公告写明 Oracle Java SE 有 55 个新安全补丁,其中 49 个可在未认证条件下远程利用。官方 linux-x64 包版本和 sha256 已核对。
主源:
- Oracle Critical Patch Update Advisory - October 2026
- JDK 27.0.1 Release Notes
- OpenJDK JDK 27.0.1 GA builds(GPLv2 + Classpath Exception)
仓库与许可证:OpenJDK 构建来自 jdk.java.net/27,许可证是 GNU General Public License, version 2, with the Classpath Exception。源码树可对照 openjdk/jdk27u 的 jdk-27.0.1+9 标签。
版本与校验和
openjdk version "27.0.1" 2026-10-20
OpenJDK Runtime Environment (build 27.0.1+9-62)
OpenJDK 64-Bit Server VM (build 27.0.1+9-62, mixed mode, sharing)
官方 sha256 与本地下载一致:
5748965a78d06be35bec771284066bcc474dab4d672113e428d5df729c264613
HttpServer 的 Host 校验(JDK-8386525)
发布说明写明:HTTP/1.1 请求没有 Host,或带多个 Host,现在会回 400 Bad Request;可用系统属性 sun.net.httpserver.disableHostValidation=true 关掉。Oracle Risk Matrix 里和 Lightweight HTTP Server 直接相关的条目是 CVE-2026-91453,公告给出的 CVSS 3.1 Base Score 是 5.3(Integrity),向量 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N。cve.org 状态是 PUBLISHED(2026-10-20),NVD totalResults=1。GitHub Advisory 检索页没有对应 GHSA 编号。
这条变化主要影响直接使用 JDK 内置轻量 HTTP 服务的代码。同一次 CPU 还覆盖 Networking、Security、JAXP、Libraries 等组件。
探测代码用原始套接字发三种请求:
raw("GET /ping HTTP/1.1\r\nHost: 127.0.0.1:18083\r\nConnection: close\r\n\r\n", "with Host");
raw("GET /ping HTTP/1.1\r\nConnection: close\r\n\r\n", "no Host header");
raw("GET /ping HTTP/1.1\r\nHost: 127.0.0.1:18083\r\nHost: evil.example\r\nConnection: close\r\n\r\n",
"multiple Host headers");
JDK 27.0.1 默认行为摘录:
with Host -> HTTP/1.1 200 OK
no Host header -> HTTP/1.1 400 Bad Request
multiple Host headers -> HTTP/1.1 400 Bad Request
加上 disableHostValidation=true 后三个用例都回到 200。同一段代码在本机 JDK 21.0.12.1(尚未纳入本次 CPU 的构建)上摘录:
with Host -> HTTP/1.1 200 OK
no Host header -> HTTP/1.1 200 OK
multiple Host headers -> HTTP/1.1 200 OK
其他公开行为变化
LuxTrust Global Root CA 移除(JDK-8387123)。发布说明列出的别名是 luxtrustglobalrootca [jdk]。27.0.1 的 cacerts 里已查不到该别名,仍保留 luxtrustglobalroot2ca:
luxtrustglobalroot2ca [jdk], Oct 21, 2026, trustedCertEntry,
luxtrustglobalrootca alias not found
IANA TZ Data 2026c。Alberta 自 2026-06-18 起固定 -06,Morocco 自 2026-09-20 起固定 +00。27.0.1 与 21.0.12.1 对照摘录:
# 27.0.1
2026-12-15 12:00 America/Edmonton offset=-06:00
2027-07-15 12:00 America/Edmonton offset=-06:00
2026-10-01 12:00 Africa/Casablanca offset=Z
# 21.0.12.1
2026-12-15 12:00 America/Edmonton offset=-07:00
2027-07-15 12:00 America/Edmonton offset=-06:00
2026-10-01 12:00 Africa/Casablanca offset=+01:00
另外,发布说明还写了默认禁用 TemplatesImpl 反序列化(jdk.xml.enableTemplatesImplDeserialization)、以及把 com.sun.jndi.ldap.object.trustSerialData 的范围扩到 LDAP 里拿到的 RMI URL 引用。安全细节多数标注 not public,正文只摆公开发布说明和 Risk Matrix 里已公开的 CVE 编号与分数。
Risk Matrix 里影响 Java SE 27 的高分段
按 Oracle 文本矩阵梳理,明确列出受影响版本包含 27、且不是 Security-in-Depth 的条目有 37 条。分数最高的几条(分数均来自 Oracle 公告,不是自估):
CVE-2026-91415(2D)CVSS 3.1 Base Score 7.0CVE-2026-91398(Networking)6.8CVE-2026-87294(Security)、CVE-2026-83395(Networking)、CVE-2026-101516(Libraries)均为 6.5,且公告标注 Easily exploitable、unauthenticated
抽查 CVE-2026-91415、CVE-2026-87290:cve.org 均为 PUBLISHED,NVD totalResults=1。
Spring Boot 4.1.1 在 27.0.1 上能起来
用 Spring Boot 4.1.1 + webmvc,编译目标仍是 21,运行时换成 27.0.1,端口 18084:
:: Spring Boot :: (v4.1.1)
Tomcat started on port 18084 (http) with context path '/'
Started App in 1.221 seconds (process running for 1.546)
java.version=27.0.1
说明这轮 CPU 构建可以立刻给现有 Boot 4.1 应用做运行时升级验证。正式吃到安全修复,仍要看文末安全基线表。
安全基线(发布说明表格):27 → 27.0.1+9;25 → 25.0.5+9;21 → 21.0.13+10;17 → 17.0.21+9;11 → 11.0.33+9;8 → 1.8.0_511-b09。下一轮 Critical Patch Update 计划日是 2026-11-17。
一起交流
分享你的思考,让讨论更进一步。