Apache ActiveMQ是一个开源的消息代理和集成模式服务应用,用于实现消息中间件,帮助不同的应用程序或系统之间进行通信。
2023年11月,Apache官方发布新版本修复了ActiveMQ中的一个远程代码执行漏洞(CVE-2022-41678),通过认证的攻击者能够利用该漏洞获取服务器权限。
该漏洞存在于Jolokia服务的请求处理方式中,结合ActiveMQ的配置不当和Java的高级功能,允许已认证的用户通过发送特定格式的HTTP请求来执行危险操作。ActiveMQ的内部配置允许org.jolokia.http.AgentServlet处理来自/api/jolokia的请求,而没有足够的安全检查来防止恶意操作。
攻击者发送到ActiveMQ服务器的HTTP请求包含特定的结构和模式。这些请求主要针对/api/jolokia接口,利用Jolokia的API进行交互。在利用漏洞之前,攻击者首先发送带有有效凭证的认证请求,以获取对Jolokia API的访问权限。
攻击过程中,会观察到一系列的JMX(Java Management Extensions)请求,目的是操纵Java Flight Recorder。这些请求包括newRecording、setConfiguration、startRecording、stopRecording和copyTo等操作。
在setConfiguration请求中,可能会包含异常或非标准的配置数据,这是后续写入Webshell的关键步骤。
最后,copyTo请求会触发对服务器文件系统的操作,导致Webshell被写入特定位置,如jsp文件中。
同时,长亭安全研究员发现该漏洞除了利用Java Flight Recorder来实现RCE,攻击者还可能会通过调用org.apache.logging.log4j2 MBean的setConfigText方法来实现对ActiveMQ的日志配置进行热重载(动态更新)以实现指定日志输出的路径和级别。这允许攻击者将特定的日志信息(例如Webshell代码)输出到特定的文件位置,使得该漏洞的利用不局限于JDK11及以上版本。
该利用方法通过Jolokia服务对Java Management Extensions (JMX) MBean的操作实现,主要是针对org.apache.logging.log4j2。攻击者发送的HTTP请求将包含调用setConfigText方法的特定指令,以修改日志配置。这可能在请求的包体中或参数中明显体现。
通过监控和分析面向ActiveMQ Web控制台(默认8161端口)的网络流量,特别是针对/api/jolokia接口的请求,可以帮助识别此类攻击。管理员应特别注意异常的认证尝试、不寻常的JMX请求序列,以及任何看似试图操纵服务器行为的请求模式。
该漏洞允许攻击者在ActiveMQ服务器上执行任意代码,这可能导致数据泄露、服务中断以及服务器的控制权丢失甚至是勒索事件的发生。
由于ActiveMQ广泛用于企业级消息传递,该漏洞的潜在影响是较为严重的。攻击者可以利用漏洞获取敏感信息,或者进一步利用服务器资源进行恶意活动。确保ActiveMQ的安全配置和及时的软件更新是防止此类攻击的关键。
Apache ActiveMQ 5.16.x系列:5.16.6之前的版本受影响。
Apache ActiveMQ 5.17.x系列:5.17.4之前的版本受影响。
Apache ActiveMQ 5.18.0:此版本未受影响。
Apache ActiveMQ 6.0.0:此版本未受影响。
建议参考官方文档(https://activemq.apache.org/web-console)开启Web 控制台认证(默认8161端口),并修改默认口令。
如非必需,建议不要将ActiveMQ Web 控制台(默认8161端口)放置在公网上。
如果可能,限制对Jolokia接口(通常是/api/jolokia)的访问。只允许可信的网络或IP地址访问该接口。
如果Jolokia服务不是必需的,可以暂时关闭它,以避免漏洞被利用。
在网络边界处增加监控和过滤措施,以识别和阻断可能利用此漏洞的恶意流量。
Apache官方已发布安全更新,建议访问官网(https://activemq.apache.org/)升级至最新版本。