
CVE-2026-49099 — 已更新!
针对 CVE-2026-49099(Apache Camel camel-salesforce)的 PoC 复现器:不带 Camel 前缀的 sObjectQuery 标头可绕过 HTTP 标头过滤器,并覆盖生产者所配置的 SOQL(SOQL 注入 / 访问控制失效)。已在 4.14.8/4.18.3/4.21.0 中修复。
CVE-2026-49099 — camel-salesforce sObjectQuery 请求头注入
同一 Apache Camel 漏洞的可运行概念验证(PoC)复现程序,每种运行时各一个:
| 运行时 | 目录 | 技术栈 |
|---|---|---|
| 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 中修复),并且都展示出完全相同的缺陷:
AbstractSalesforceProcessor.getParameter() 会在端点配置值之前解析 sObjectQuery 请求头(及其同族 apexUrl、
sObjectName 等)。这些请求头名称是不带 Camel 前缀的裸字符串,且 camel-salesforce 未附带任何
HeaderFilterStrategy,因此 HTTP 边界过滤器(HttpHeaderFilterStrategy,仅剥离 Camel* 头)会让入站 HTTP 请求头
直接穿透并覆盖路由作用域内的 SOQL —— 造成 SOQL 查询覆盖 / 访问控制失效(CWE-74 + CWE-639)。
每个子目录都是自包含项目,配有各自的 Dockerfile、docker-compose.yml 和 README —— 并附带一个录制式的
salesforce 替身组件,因此无需 Salesforce 组织、OAuth 或网络。简而言之,对二者任一执行:
cd camel-spring-boot # or: cd camel-quarkus
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down
漏洞摘要
| 属性 | 值 |
|---|---|
| 组件 | camel-salesforce |
| CWE | CWE-74(注入)/ CWE-639(通过用户可控密钥绕过授权) |
| 影响 | 未认证的 HTTP 客户端可通过未过滤的请求头覆盖路由作用域内的 SOQL/SOSL/Apex 参数,以集成用户的权限读取或操作预期范围之外的数据 |
| 受影响版本 | 从 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-23716(PR apache/camel#23887) |
| 致谢 | Yu Bao (PayPal) |
修复方案将请求头常量重命名为 CamelSalesforce* 约定(例如 CamelSalesforceSObjectQuery),使其像其他所有
Camel* 请求头一样在 HTTP 边界被剥离。
安全公告:https://camel.apache.org/security/CVE-2026-49099.html
免责声明
这些复现程序仅供安全研究和授权测试使用,针对的是已公开披露并已修复的漏洞。未经明确许可,请勿将其用于任何系统。