关于 CVE-2023-46604 的更新
摘要
CVE-2023-46604 最近被公布,它引起了邮件列表和 Jira 上大量来自用户关于其对 ActiveMQ Classic 和 ActiveMQ Artemis 客户端和代理的影响的疑问。简而言之
- 建议 ActiveMQ Classic 和 ActiveMQ Artemis 代理的用户进行升级。
- 建议使用任何基于 Java 的 OpenWire 客户端(例如,Maven 依赖项
activemq-client
)的用户进行升级(无论您使用哪个代理)。
在 CVE 公布当天,所有当前分支的新版本都已发布
ActiveMQ Classic
ActiveMQ Artemis
CVE 概述
如官方 CVE 描述中所述
Java OpenWire 协议编组器容易受到远程代码执行攻击。此漏洞可能允许远程攻击者通过网络访问基于 Java 的 OpenWire 代理或客户端,通过操纵 OpenWire 协议中序列化类的类型,导致客户端或代理(分别)在类路径上实例化任何类,从而运行任意 shell 命令。
利用此漏洞需要三个条件
- 网络访问
- 操纵的 OpenWire 命令(用于使用
String
参数在类路径上实例化任意类) - 类路径上的一个类,可以通过使用
String
参数对其进行实例化来执行任意代码
操纵的命令(即 #2)可以由客户端发送到代理,也可以由代理发送到客户端,因此 **两者** 都容易受到攻击。
ActiveMQ Classic 详细信息
ActiveMQ Classic 代理附带了一些 Spring 依赖项,包括 org.springframework.context.support.ClassPathXmlApplicationContext
,它用于运行 Spring 应用程序。此类不仅存在于代理上,而且也是一个非常常见的客户端依赖项。它具有 一个构造函数,它接受一个 String
,该字符串可以是指向网络上 XML 应用程序配置文件的 HTTP URL。
已知此漏洞的唯一利用方式是使用此 ClassPathXmlApplicationContext
从网络上的某个地方通过 HTTP 加载恶意 XML 应用程序配置文件。此恶意 XML 特别定义了要在具有漏洞的机器(即代理或客户端)上运行的任意代码。
ActiveMQ Artemis 详细信息
ActiveMQ Artemis 支持 OpenWire 协议,因此它具有来自 ActiveMQ Classic 的依赖项,用于支持此协议。这些依赖项包括易受攻击的代码。但是,Artemis 没有附带 Spring,因此目前还没有已知的利用方式。无论如何,仍然建议升级。