Apache 软件基金会于 2026 年 11 月 5 日一次性公开 Apache Juneau 项目的 9 个 CVE,影响 9.2.0 及更早版本,统一在 9.2.1 修复。其中 8 个按 CVSS 4.0 计算得到满分 10.0,覆盖路径穿越、CSRF、凭证泄露、动态类加载与响应头注入。分数之高在近期框架类披露中罕见,但真实风险高度取决于应用是否打开了对应的非默认功能。
事件概述
Juneau 是 Apache 旗下的 Java 框架,包含 REST 服务端、RestClient 客户端与微服务组件,常用于内部微服务与运维接口的快速搭建。这次 9 个漏洞共用同一个公告线程,属于典型的「攒批披露」。从 CVE 记录的保留日期看,最早一枚 CVE-2026-73098 在 8 月 10 日就已登记,CVE-2026-96677 在 9 月 23 日登记,到 11 月 5 日才统一发布——中间两到三个月是修复与协调窗口。
九枚漏洞与触发条件
- CVE-2026-121489(10.0):微服务 DirectoryResource 不把请求路径限制在配置的根目录内。应用需开启该资源的 view、upload 或 delete(默认全关),开启后客户端可读取、写入、删除服务器进程可触及的任意文件。
- CVE-2026-73099(10.0):REST 服务端接受 content 查询参数替代请求体,默认对所有 HTTP 方法生效,包括 GET。一个跨站链接即可在无 CORS 预检的情况下投递攻击者指定的请求体,绕过依赖方法或内容类型的防护。
- CVE-2026-73098(10.0):把输入解析为 java.lang.Class 类型属性时,默认类转换会以「启用初始化」的方式加载类,于是输入指定的类会执行其静态初始化块。影响取决于应用 classpath 上存在哪些类。
- CVE-2026-73100(10.0):默认 REST 调用日志在请求以服务端错误结束时记录请求头且不做脱敏,Authorization、Cookie、Proxy-Authorization、X-API-Key 会以明文写入应用日志。
- CVE-2026-73101(10.0):错误响应通过 Thrown 响应头回传内部异常类名与消息,即使关闭堆栈渲染也会泄露实现细节。
- CVE-2026-73116(10.0):RestClient 跟随 HTTP 重定向时保留原请求的凭证头,跳转到其他主机、其他端口或从 HTTPS 降到 HTTP 时,Authorization 与 X-API-Key 等会一并送出。
- CVE-2026-73117(10.0):响应头值与重定向目标未做校验,若应用用请求数据拼装响应头,可造成 CRLF 注入或任意跳转。框架自身不拼接,暴露取决于应用代码。
- CVE-2026-96677(10.0):HTML 文档序列化不对页面框架字段中的变量做 HTML 编码,若这些字段包含请求派生变量,就会形成反射型 XSS。默认框架不使用请求变量。
- CVE-2026-73095(8.7):MessagePack 解析器按输入中的长度值分配缓冲区,而 REST 服务端默认启用该解析器。未认证客户端发送几个字节即可迫使服务分配数 GB 内存并抛 OutOfMemoryError。同批修复的还有 multipart 上传与请求读取缓冲区的不受限分配。
技术细节:为什么会有 8 个 10.0
8 枚满分的共同点是 CVSS 4.0 向量一致:AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H,且后续系统影响全部为 High(SC:H/SI:H/SA:H)。CVSS 4.0 与 3.1 的最大差别在于把「易受攻击系统」与「后续系统」的影响拆开计分,当框架缺陷被判定为可能影响宿主应用及其下游时,后续影响拉满就会把总分推到 10.0。换句话说,这些分数表达的是「最坏情况下的框架级风险」,而不是「你的实例一定被一键打穿」。
读这批公告的正确方式,是逐条核对触发条件:DirectoryResource 需要应用主动开启三个开关之一;CSRF 需要端点本身是有副作用的且依赖方法或 Content-Type 做防护;XSS 需要应用的页面框架字段里放了请求变量;CRLF 需要应用用请求数据拼响应头。真正无需额外条件的就是 73095 的 MessagePack 内存放大——它默认启用,且未认证。
影响评估
对把 Juneau 用作内部运维接口、微服务网关或数据导出服务的团队,风险集中在三条:一是 73095 的拒绝服务,任何能访问端口的人都能把进程打挂;二是 73100 与 73101 的信息泄露,日志里会沉淀明文 Authorization 头与 API Key,而这些日志常被同步到集中日志平台,泄露面比想象中大;三是 121489,一旦有人为了「方便」打开了 DirectoryResource 的 upload 或 delete,等于给服务器开了文件读写通道。
EPSS 对这几枚的当前估值均在 0.5% 以下,说明自动化扫描尚未铺开,但这只是因为 Juneau 属小众框架、指纹识别困难,不代表可以延后处理。
修复建议
- 升级到 Apache Juneau 9.2.1 或更高版本,9 个问题在该版本一并修复。
- 升级后仍建议逐项自查:是否使用 DirectoryResource 及其 view/upload/delete 开关;是否依赖 content 查询参数传请求体;页面框架字段是否包含请求变量;是否用请求数据拼装响应头或重定向目标。
- 若自行创建 HttpClient 而未用 RestClient 构建器,73116 的修复不覆盖你的客户端,需在业务代码中禁止跨主机重定向或在重定向时剥离凭证头。
- 把 Juneau 服务端的错误日志按「可能含凭证」对待,限制访问权限并缩短保留周期,必要时对历史日志中的 Authorization 与 X-API-Key 做追溯清理。
- 对外暴露的 Juneau 接口应前置鉴权与请求体大小限制,不要依赖框架默认值承担边界防护。