针对 Apache Camel 漏洞的可运行概念验证复现程序。该漏洞中,用于阻止请求头被反射到响应中的防护机制以区分大小写的方式比较请求头名称,而 HTTP 请求头名称本身不区分大小写。调用方只需改变请求头名称的大小写即可绕过该抑制——而且在 HTTP/2 下它根本不会匹配,因为该协议要求请求头名称在传输时使用小写,因此对于每个 HTTP/2 请求,该抑制都形同虚设。其后果是调用方所选的内容会被回显到响应中(这是响应拆分和缓存投毒攻击的基础),并且它会反射出该抑制本应阻止的凭据请求头(Authorization、Cookie、Proxy-Authorization)。
| 运行时 | 目录 | 技术栈 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.5.13 + camel-platform-http-vertx 4.22.0(受影响;修复版本 4.22.1),Camel 的 Vert.x 服务器 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.29.0 + camel-quarkus-platform-http(Camel 4.15.0,受影响;修复对照 CQ 3.40.0 / Camel 4.22.1) |
两个模块均演示了受影响和已修复的行为。
提供了一个 platform-http:/echo 端点。其 HeaderFilterStrategy 本应抑制响应中的常见请求头。驱动程序会直接检查该策略,并发送一个携带小写(HTTP/2 风格)凭据请求头的实时请求。
Authorization(规范形式),但不会抑制 authorization(小写形式),并且携带 authorization: Bearer <secret> 的实时请求会被回显到响应中。# Camel Spring Boot
cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected: lowercase header echoed back; >>> PROVEN
docker compose down
# Patched control
mvn clean package -Dcamel.version=4.22.1
java -jar target/cve-2026-85254-platform-http-header-echo-0.0.1-SNAPSHOT.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed; >>> Not exploited
# Camel Quarkus
cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack # affected (Camel 4.15.0): lowercase header echoed back
docker compose down
# Patched control: CQ 3.40.0 ships Camel 4.22.1
mvn clean package -Dcamel-quarkus.version=3.40.0 -Dquarkus.platform.version=3.40.0
java -jar target/quarkus-app/quarkus-run.jar &
curl -s http://localhost:8080/exploit/attack # fixed: suppressed
| 属性 | 值 |
|---|---|
| 组件 | camel-platform-http(PlatformHttpEndpoint、COMMON_HTTP_REQUEST_HEADERS) |
| CWE | CWE-178(大小写敏感处理不当) |
| 严重程度 | 中危 |
| 攻击向量 | 名称大小写与规范拼写不同的请求头(例如任何 HTTP/2 请求) |
| 影响 | 调用方选择的头内容被回显到响应中——响应拆分 / 缓存投毒,以及本应被抑制的凭据头被反射 |
| 受影响版本 | 从 4.0.0 起至 4.18.5 之前,从 4.19.0 起至 4.22.1 之前 |
| 修复版本 | 4.18.5、4.22.1、4.23.0 |
| JIRA | CAMEL-24453 |
| 致谢 | Claude Security Scan Tool |
公告:https://camel.apache.org/security/CVE-2026-85254.html
PlatformHttpEndpoint 现在将 COMMON_HTTP_REQUEST_HEADERS 保存在
大小写不敏感的 TreeSet(String.CASE_INSENSITIVE_ORDER) 中,而不是大小写敏感的 Set.of(...),因此无论调用方
如何设置头名称的大小写,抑制都能匹配——包括 HTTP/2 所要求的全小写名称。
在 Camel 端点之前剥离相关头,或者在路由中从响应里移除它们,而不是依赖内置的抑制机制。
本仓库出于教育和防御目的发布:帮助 Apache Camel 用户理解该漏洞、验证自身是否受影响,并确认升级可以解决该问题。注入的头值是一个无实际作用的本地测试样本。请勿将本材料用于您不拥有或运营的系统。