K3ysTr0K3R/CVE-2026-34197
GitHub: K3ysTr0K3R/CVE-2026-34197
该项目复现了 Apache ActiveMQ 经 Jolokia 桥接器的远程代码执行漏洞(CVE-2026-34197),展示了 Spring bean 提前实例化绕过配置验证从而实现 RCE 的利用链。
Stars: 2 | Forks: 0
# CVE-2026-34197 - Apache ActiveMQ Jolokia 远程代码执行 (RCE)
CVE-2026-34197 是一个影响 Apache ActiveMQ Classic 的高危远程代码执行 (RCE) 漏洞。该问题存在于 Jolokia JMX-HTTP 桥接器中,该桥接器通过 `/api/jolokia/` endpoint 通过 HTTP 暴露管理操作。
默认的 Jolokia 访问策略允许经过身份验证的用户调用 ActiveMQ MBeans 上的管理操作。某些 broker 管理方法接受用户控制的 discovery URI。特制的 URI 可以导致 ActiveMQ 在 broker 配置验证发生之前加载远程的 Spring XML application context。
在初始化期间,Spring 会立即实例化 singleton beans。由于 bean 的初始化发生在 ActiveMQ 验证提供的配置之前,攻击者控制的 bean 定义可能会在 broker 的 JVM 内执行任意的 Java 代码。这最终可能导致 ActiveMQ 进程以运行该服务的权限被完全攻陷。
## 技术细节
该漏洞影响多个组件之间的交互:
- Apache ActiveMQ Classic
- Jolokia JMX-HTTP 桥接器
- Java Management Extensions (JMX)
- BrokerService 管理操作
- Spring Framework 的 `ResourceXmlApplicationContext`
通常,通过 Jolokia 暴露的管理操作旨在用于 broker 管理。但是,某些 broker 方法接受外部配置引用。
由于 Spring 会立即加载并实例化 bean,恶意的 bean 定义可能会在 ActiveMQ 验证提供的配置是否应该被接受之前执行。
这种执行顺序问题尽管存在后续的验证逻辑,但仍会造成代码执行原语。
## 根本原因
该漏洞是由同时发生的两个安全设计问题引起的:
1. 通过 Jolokia 暴露的管理 JMX 操作接受攻击者控制的输入。
2. Spring 在 ActiveMQ 验证提供的配置之前会急切地实例化 singleton bean。
这些行为的结合使得在 application context 初始化期间(而不是在配置验证之后)就允许了执行操作。
## 影响
成功利用此漏洞可能允许经过身份验证的攻击者:
- 在 broker JVM 中执行任意代码
- 破坏消息 broker 的完整性
- 访问或操纵托管的消息基础设施
- 根据部署架构,可能会在环境中进一步进行内网渗透
## 受影响版本
受影响的版本包括:
| 产品 | 存在漏洞的版本 |
|----------|--------------------|
| Apache ActiveMQ Classic | 早于 5.19.4 |
| Apache ActiveMQ 6.x | 6.0.0 至 6.2.2 |
用户应升级至:
- 5.19.4 或更高版本
- 6.2.3 或更高版本
## 缓解措施
Apache 建议:
- 升级到已修复的版本。
- 限制对 Jolokia endpoint 的管理访问权限。
- 限制经过身份验证的管理员账户。
- 监控意外的 broker 配置更改。
- 审计对 ActiveMQ web 控制台的访问权限。
标签:Apache ActiveMQ, Go语言工具, JMX, Jolokia, JS文件枚举, RCE, Spring框架, 安全漏洞