mail.smtp.* 标头注入针对同一 Apache Camel 漏洞的可运行概念验证复现程序,每种运行时一个:
| 运行时 | 目录 | 技术栈 |
|---|---|---|
| Camel Spring Boot | camel-spring-boot/ | Spring Boot 3.2.0 + camel-spring-boot 4.18.2 |
| Camel Quarkus | camel-quarkus/ | Quarkus 3.36.0 + Camel Quarkus 3.36.0(捆绑 Camel 4.20.0) |
两者均为受影响版本(已在 4.14.8 / 4.18.3 / 4.21.0 中修复),且都展示了完全相同的缺陷:邮件
生产者的 getSender() 在连接前将任何入站 mail.smtp.* 消息标头折叠进 JavaMail 会话。这些名称是
裸的、非 Camel 前缀的字符串,因此 HTTP 边界过滤器
(HttpHeaderFilterStrategy,仅剥离 Camel*)允许未经身份验证的 HTTP 客户端设置它们。两个额外的
请求标头(mail.smtp.socks.host / mail.smtp.socks.port)将受害者的已认证 SMTP
连接通过攻击者控制的 SOCKS 代理进行隧道传输,从而窃取明文 AUTH LOGIN 凭据——
而受害者的发送仍然成功,因此拦截是无声的。
每个子目录都是一个自包含的项目,带有自己的 Dockerfile、docker-compose.yml 和 README——
“合法”SMTP 服务器和攻击者的 SOCKS 代理都在 JVM 内运行,因此无需外部服务。简而言之,
对于任一项目:
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-46584.html
这些复现程序仅供安全研究和授权测试使用,针对的是已公开披露并 修复的漏洞。未经明确许可,请勿将其用于任何系统。
| 属性 | 值 |
|---|
| 组件 | camel-mail |
| CWE | CWE-20(输入验证不当)/ CWE-200(信息暴露) |
| 影响 | 入站 mail.smtp.* 标头重写 JavaMail 会话 → 传输拦截、凭据窃取、信任/TLS 削弱 |
| 受影响版本 | 从 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-23522 |