Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-83531 — 针对 CVE-2026-83531 的可运行 Spring Boot 概念验证,演示 Apache Camel 的 dynamic-router-control 端点中的表达式语言注入,并验证修复。 | Kitploit
工具/GitHubGitHub/oscerd/cve-2026-83531
防御工具漏洞分析代码分析漏洞利用Web应用程序漏洞利用学习与教育
GitHuboscerd/cve-2026-83531

CVE-2026-83531

针对 CVE-2026-83531 的可运行 Spring Boot 概念验证,演示 Apache Camel 的 dynamic-router-control 端点中的表达式语言注入,并验证修复。

查看仓库
321小时11分前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-83531 — camel-dynamic-router:控制端点表达式语言注入

针对 Apache Camel 漏洞的可运行概念验证复现程序。在该漏洞中,dynamic-router-control 端点从传入消息中获取订阅谓词以及用于编译该谓词的语言名称(即 DynamicRouterControlMessage 的 predicate / expressionLanguage 字段,或 CamelDynamicRouterPredicate / CamelDynamicRouterExpressionLanguage 消息头)。随后,该服务从 CamelContext 中解析该语言,并将表达式编译为 Predicate,既没有允许列表,也没有选择加入机制。编译后的谓词会针对通过该通道路由的每个 exchange 进行求值——因此,任何能够将消息发送到某个传输通道、且该通道的路由会将其转发到控制端点的行为者,都可以提供自己选择的表达式,并以 Camel 进程的权限进行求值。类路径上的任何语言都可能被选中,包括 simple,它始终存在且是默认值。

仅限 Camel Spring Boot。 不存在 camel-quarkus-dynamic-router 扩展,因此此复现程序无法在 Camel Quarkus 上运行。

运行时目录技术栈
Camel Spring Bootcamel-spring-boot/Spring Boot 3.5.13 + camel-dynamic-router 4.22.0(受影响;修复版本 4.22.1)

演示内容

该应用设置了一个 Dynamic Router 通道 test(direct:start → dynamic-router://test)。攻击者发送一条订阅控制消息,其中携带攻击者选择的谓词表达式和语言:

CamelDynamicRouterPredicate          = ${bean:detonator?method=detonate}
CamelDynamicRouterExpressionLanguage = simple

然后,一条消息通过该通道进行路由,该通道会评估订阅谓词。在受影响的构建上,该表达式会执行,调用 detonator.detonate()——这是攻击者能够触及的任意无参数注册表方法的一个无害替代品(而且任何语言,例如 Groovy,都能实现任意代码执行)。在已修复的构建上,控制端点会拒绝从消息中获取谓词/语言。

cd camel-spring-boot
mvn clean package
docker compose up -d --build
curl -s http://localhost:8080/exploit/attack
docker compose down

在受影响的构建上预期输出:

Subscription accepted.
>>> PROVEN: the attacker-supplied predicate expression was compiled and evaluated, invoking
>>> detonator.detonate() with the privileges of the Camel process ...

在修复后的构建版本中,订阅会被拒绝,并抛出 IllegalArgumentException: The subscription predicate expression, and the language used to compile it, cannot be taken from a control message. ... set 'allowPredicateFromMessage=true' ...。

漏洞摘要

属性值
组件camel-dynamic-router(dynamic-router-control 端点)
CWECWE-94(代码注入)、CWE-917(表达式语言注入)
严重性高
攻击向量一条控制消息(subscribe/update)提供谓词表达式及其语言,且其所在传输的路由会将该消息转发至 dynamic-router-control 端点
影响以 Camel 进程的权限对攻击者选定的表达式(任意 classpath 语言)进行求值——即代码执行
受影响版本4.4.0 起至 4.18.5 之前,4.19.0 起至 4.22.1 之前
修复版本4.18.5、4.22.1、4.23.0
JIRACAMEL-24576
致谢Leon Zlobecki

公告:https://camel.apache.org/security/CVE-2026-83531.html

修复方案

默认情况下,谓词表达式及其语言不再从控制消息中获取:除非路由作者在 dynamic-router-control 端点上显式启用 allowPredicateFromMessage=true,否则提供这些内容的控制消息会被拒绝。预期做法是在端点 URI 上配置 predicate 和 expressionLanguage(由路由作者控制),这与 4.4.0 之前的版本一致。

无法升级时的缓解措施

不要将外部来源的消息转发至 dynamic-router-control 端点;仅通过路由作者控制的端点管理订阅,并限制可访问控制通道的传输方式。

免责声明

本仓库出于教育和防御目的发布:帮助 Apache Camel 用户理解该漏洞、确认自身是否受影响,并验证升级后该问题已解决。载荷是一个无害的标记 bean。请勿将本材料用于您不拥有或运营的系统。

下载工具