《Computers》:Exploiting Jolokia for Remote Code Execution: A Cybersecurity Analysis of CVE-2023-50780 in Apache ActiveMQ Artemis
编辑推荐:
Java中间件平台通过Jolokia等HTTP可访问接口暴露强大的管理功能。本文通过将CVE-2023-50780在Apache ActiveMQ Artemis中的漏洞视为管理平面状态转换问题而非孤立的漏洞利用脚本集合,对该漏洞进行分析。研究人员分析了三条远
Java中间件平台通过Jolokia等HTTP可访问接口暴露强大的管理功能。本文通过将CVE-2023-50780在Apache ActiveMQ Artemis中的漏洞视为管理平面状态转换问题而非孤立的漏洞利用脚本集合,对该漏洞进行分析。研究人员分析了三条远程代码执行(Remote Code Execution, RCE)路径,这些路径将Jolokia可访问的MBean(Managed Bean, 托管Bean)与Log4J2配置可变性、Artemis文件系统和部署语义、代理(Broker)或Web服务器重启行为相结合,其中一条向量还涉及Java DiagnosticCommand接口。研究定义了形式化攻击者模型;区分了已证实的前置条件与依赖于部署环境的假设;从所需权限、网络依赖、可写制品、执行触发条件、可靠性、检测机会及缓解措施方面对三条向量进行比较;并在中断漏洞利用阶段层面评估了防御控制。本文还阐明了负责任的披露背景,减少操作性载荷细节而侧重于面向防御者的证据、验证表及架构分析。最终贡献是一个可复现但有边界的案例研究,说明当管理接口在没有充分的权限分离、MBean限制、文件系统加固和升级控制的情况下暴露时,合法的管理操作如何组合成代码执行。
论文解读:利用Jolokia实现远程代码执行——Apache ActiveMQ Artemis中CVE-2023-50780的网络安全分析
该论文《Exploiting Jolokia for Remote Code Execution: A Cybersecurity Analysis of CVE-2023-50780 in Apache ActiveMQ Artemis》发表于MDPI期刊《Computers》。研究背景指出,Java中间件平台(如Apache ActiveMQ Artemis消息代理/Broker)除消息协议外,常集成管理Web接口、嵌入式Web服务器(Jetty)、日志子系统(Log4J2)及Java管理扩展(Java Management Extensions, JMX)。Jolokia作为基于HTTP/JSON的JMX桥接器使管理平面可被远程调用。传统认知中单独的安全边界不足以涵盖风险,当Jolokia暴露且缺乏细粒度权限控制时,多个本属合法的 managerial operations(管理操作)经链式组合可形成高危攻击面,此前ActiveMQ Classic曾出现过类似Jolokia+Log4J MBean导致RCE的案例。然而针对Artemis版本低于2.29.0所曝出的CVE-2023-50780,尚缺乏将其作为管理平面状态转换问题的系统性根因与向量对比分析。为此,研究人员以Apache ActiveMQ Artemis 2.27.1(受影响的版本)、Ubuntu 22.04/24.04及OpenJDK 17为基线环境,通过组件枚举、状态转换建模、可控验证与缓解分析,阐明CVE-2023-50780的三条RCE利用路径及其前置条件、触发机制与防御映射,论证管理接口须被视为具操作级最小特权(Least Privilege)的安全边界,对Java中间件管理架构的同类风险分析提供框架参考。
研究人员采用的主要关键技术方法如下:搭建基线环境(Apache ActiveMQ Artemis 2.27.1,Ubuntu 22.04/24.04 LTS,OpenJDK 17,Jolokia暴露于Artemis控制台端点);通过Jolokia接口枚举可达MBean及操作;构建状态转换模型判断可达操作能否改变文件、配置源、部署制品或运行时加载器状态;通过可控验证测试转换序列能否在特定环境下引致代码执行(借助已有Jolokia-based Log4J利用工具及JVM Agent加载工具);针对各转换阶段测试防御控制(如Jolokia鉴权加固、MBean策略限制、文件系统权限分离、出口过滤、DiagnosticCommand禁用、版本升级)对利用链的中断效果,形成缓解—验证矩阵。
5. Results: Three Management-Plane RCE Vectors(结果:三条管理平面RCE向量)
5.1. Vector 1: broker.xml Overwrite and Broker Restart(向量1:broker.xml覆写与Broker重启)
研究人员利用Log4J2配置可变性,通过Jolokia调用Log4J2配置操作将攻击者控制的内容写入Artemis的broker.xml配置文件,随后诱导或等待Broker进程重启,在启动阶段评估被篡改的network-check command从而触发代码执行。结论:Broker所用配置文件属安全敏感的"执行输入",该向量受限于需完整Java进程重启方可触发。
5.2. Vector 2: WAR Overwrite and Embedded Jetty Restart(向量2:WAR覆写与嵌入式Jetty重启)
研究人员借助Log4J2配置源机制加载properties格式配置,覆写已有的Artemis WAR(Web Application Archive)文件,再通过Artemis Broker MBean重启嵌入式Jetty服务器使恶意WAR被重新部署,WAR载荷采用基于Servlet的命令执行技术。此向量演示可从远端FTP URI加载恶意Log4J properties文件(非内在要求,仅为演示)。结论:该路径依赖嵌入式Web服务器重启及WAR文件可写性,与向量1触发机制不同。
5.3. Vector 3: Local Double-Write JAR and JVM Agent Loading(向量3:本地双写JAR与JVM Agent加载)
为应对出口连接受限及WAR文件属主受保护场景,研究人员构造双写模式:先用XML格式Log4J2配置写出本地properties格式配置,再更新ConfigLocationUri加载该本地文件向可写路径写出JAR,最后经由Jolokia调用DiagnosticCommand.jvmtiAgentLoad将被写入的JAR Agent载入运行中的JVM(JAVA Virtual Machine, Java虚拟机)。结论:仅做出口过滤(Egress Filtering)不足以防利用——若Log4J2配置变更与DiagnosticCommand调用仍可达,可通过本地分段写入完成载荷暂存与加载,无需出站连接。
6. Root-Cause Analysis(根因分析)
研究人员分解得出四处根因:(1) JMX语义经Jolokia以HTTP暴露,原设计面向可信管理上下文;(2) 暴露MBean权限过度——Log4J2配置方法可影响文件输出、Artemis Broker操作可重启组件、DiagnosticCommand可加载运行时Agent;(3) 触发可用性——单纯任意文件写不足以RCE,还需Broker重启、Web容器重部署或JVM加载器调用才可致代码执行;(4) 部署加固程度决定可用路径(如文件属主分离可阻断WAR覆写但留临时文件+DiagnosticCommand路径;出口过滤可阻远程配置拉取但留本地双写)。CVE-2023-50780的可利用性源于各自合法特性经攻击者链式组合产生恶意行为(任意文件写及间接RCE)。
7. Mitigation Validation(缓解措施验证)
研究人员按中断漏洞利用所处阶段评估缓解措施,区分完全阻断、部分干扰及残留风险。有效防御需分层实施:升级至修复版本Artemis 2.29.0、限制Jolokia网络暴露与认证、最小化暴露MBean(尤其是Log4J2 config与DiagnosticCommand)、文件系统分离(配置/可执行制品不可互写)、禁用不必要的jvmtiAgentLoad等诊断加载能力、出口过滤、完整性监控及针对可疑MBean操作告警。
9. Discussion(讨论)
研究人员指出管理平面安全要求在操作(operation)层级实施最小特权,而非仅端点(endpoint)层鉴权。认证管理员接口若暴露可任意写文件、重定向配置源、重启可执行组件或加载JVM代码之操作且无附加策略检查,仍属不安全。各单一防御均有局限:出口过滤不防本地双写、文件属主分离不移除可写临时路径风险、认证不约束已认证后可调用的危险MBean。有效防御为上述分层控制组合。
11. Conclusions(结论)
本研究将CVE-2023-50780分析为Apache ActiveMQ Artemis中的管理平面漏洞。三条RCE向量在触发机制、网络假设及加固敏感度上各异,但共享同一架构模式:Jolokia暴露的MBean允许攻击者控制的状态转换将配置可变性、文件系统写入、部署行为或JVM诊断能力转化为代码执行。最重要的防御结论是管理接口必须被视为具操作级最小特权的安边界。升级至修复版Artemis至关重要,但持久降低风险亦需限制Jolokia暴露、最小化暴露MBean、分离可写配置与可执行制品、禁用非必要诊断加载器、过滤出口及监控管理平面状态变更。本案例既是对CVE-2023-50780的有界重构,也为分析Java中间件管理架构中同类风险提供框架。