针对同一 Apache Camel 漏洞的可运行概念验证复现程序,每种运行时一个:
| 运行时 | 目录 | 技术栈 | 被劫持的端点 | 演示的影响 |
|---|---|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 | 通过 CamelExecCommand* 的 exec: | 远程代码执行 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0(捆绑 Camel 4.20.0) | 通过 CamelHttpUri 的 http | 服务端请求伪造 |
两者均为受影响版本(已在 4.14.8 / 4.18.3 / 4.21.0 中修复),且都演示了相同的缺陷:
Sqs2HeaderFilterStrategy 仅配置了出站过滤器,因此 Sqs2Consumer 会将每一个入站 SQS
消息属性映射到 Exchange 上——包括 Camel 控制头。路由作者从未暴露任何更改下游目标的方式,
但能够将消息入队的攻击者可以注入一个控制头并操纵下游生产者(CWE-20)。
Spring Boot 变体通过 exec: 端点证明了 RCE。该端点在 Camel 4.20.0(即 Camel Quarkus 3.36.0
捆绑的版本)上默认不可达:CAMEL-23315 为 camel-exec 添加了 allowControlHeaders 选项,
默认值为 false,首次随 4.20.0 发布。该加固与本 CVE 无关,且不能修复它——在 4.20.0 中,
注入的消息属性仍然会成为 Exchange 头。因此 Quarkus 变体通过 CamelHttpUri 劫持 http 生产者,
该头默认被接受,从而产生 SSRF。
每个子目录都是一个自包含项目(外加由其 docker-compose.yml 启动的 LocalStack 容器),
并带有各自的 Dockerfile 和 README。简而言之,对于任一项目:
cd camel-spring-boot # 或:cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
公告:https://camel.apache.org/security/CVE-2026-46456.html
这些复现程序仅供安全研究和授权测试使用,针对的是已公开披露并已修复的漏洞。 未经明确许可,请勿将其用于任何系统。
| 属性 | 值 |
|---|
| 组件 | camel-aws2-sqs |
| 受影响的类 | org.apache.camel.component.aws2.sqs.Sqs2HeaderFilterStrategy(无入站过滤器)/ Sqs2Consumer |
| CWE | CWE-20:输入验证不恰当 |
| 影响 | 消息发送者注入 Camel 控制头 → 操纵下游生产者 |
| 受影响版本 | 4.0.0 至 4.14.8 之前,4.15.0 至 4.18.3 之前,4.19.0 至 4.21.0 之前 |
| 修复版本 | 4.14.8、4.18.3、4.21.0 |
| JIRA | CAMEL-23506 |