關於 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 協定封送器容易受到遠端程式碼執行攻擊。此漏洞可能允許具有網路存取的遠端攻擊者,透過操縱 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,因此目前沒有已知的利用方式。儘管如此,仍然建議升級。