IssueKey 标头注入针对同一 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 中修复),且都展示了完全相同的缺陷:camel-jira 生产者从 Exchange 消息头中读取其操作参数(issue key、project key、transition id……),而这些消息头的常量 —— IssueKey、ProjectKey、IssueTransitionId…… —— 都是不带 Camel 前缀的裸字符串。HTTP 边界过滤器(HttpHeaderFilterStrategy)只会剥离以 Camel* 开头的标头,因此同名的入站 HTTP 标头会直接进入 Exchange,并覆盖路由所操作的内容。未认证的客户端注入 IssueKey: PROD-999,路由的服务账号便会删除任意的 issue(CWE-639)。
每个子目录都是一个自包含的项目,拥有各自的 Dockerfile、docker-compose.yml 和 README。简而言之,对两者中的任意一个:
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
该修复将这些标头常量重命名为 CamelJira* 约定(例如 CamelJiraIssueKey),使它们能像其他所有 Camel* 标头一样在 HTTP 边界被剥离。
安全公告:https://camel.apache.org/security/CVE-2026-48206.html
这些复现程序仅供安全研究和授权测试使用,针对的是已公开披露且已修复的漏洞。未经明确许可,请勿将其用于任何系统。
| 属性 | 值 |
|---|
| 组件 | camel-jira |
| CWE | CWE-20(输入验证不当)/ CWE-639(通过用户控制的键绕过授权) |
| 影响 | 利用端点的服务账号凭据执行任意 JIRA 操作(删除/转换/创建/修改) |
| 受影响版本 | 从 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-23576(PR apache/camel#23417) |
| 致谢 | Yu Bao(PayPal) |