CVE-2026-40860-ApacheCamel-JMS反序列化RCE漏洞分析报告"

admin 2026-10-20 07:21:49 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

cover_image

CVE-2026-40860-ApacheCamel-JMS反序列化RCE 漏洞分析报告

md-bot
md-bot

Sec打更人

2026年7月10日 19:51
广东

在小说阅读器读本章

去阅读

CVE-2026-40860 漏洞分析报告

CVE编号:CVE-2026-40860

标题:CVE-2026-40860-ApacheCamel-JMS反序列化RCE

创建时间:2026-07-10T17:17:23.013658+08:00

漏洞描述

该漏洞是Apache Camel中多个JMS相关组件(包括camel-jms、camel-sjms、camel-sjms2、camel-amqp、camel-activemq和camel-activemq6)存在的一个严重的不安全反序列化漏洞,被分配编号CVE-2026-40860。漏洞的核心成因在于camel-jms组件中的JmsBinding.extractBodyFromJms()方法,以及camel-sjms组件中对应的JmsBinding类,在处理接收到的JMS ObjectMessage时,直接调用了javax.jms.ObjectMessage.getObject()方法进行反序列化。getObject()方法默认会使用Java原生的ObjectInputStream.readObject()来解析消息体中的二进制数据,而Camel在这些组件的处理逻辑中,并未在调用getObject()之前或之后施加任何有效的ObjectInputFilter、类白名单或黑名单来限制可被反序列化的类。这意味着,当Camel应用作为JMS消费者,并且其mapJmsMessage选项保持默认的true状态时(这是默认配置),任何接收到ObjectMessage类型的JMS消息,其消息体中的对象都会被无差别地反序列化。攻击者如果能够向目标Camel应用所监听的JMS队列或主题中发布一条精心构造的ObjectMessage,该消息的载荷中包含一个恶意的反序列化Gadget链。当Camel消费者消费这条消息,并触发extractBodyFromJms方法进行反序列化时,这个Gadget链会在反序列化过程中自动执行,导致攻击者可以在目标服务器上执行任意代码。该漏洞的影响范围不仅限于camel-jms,还通过继承关系影响到了camel-sjms2(因为Sjms2Endpoint继承自SjmsEndpoint)和camel-amqp(因为AMQPJmsBinding继承自JmsBinding),以及其他基于JmsComponent构建的组件,如camel-activemq和camel-activemq6,使得该漏洞的潜在影响面十分广泛。成功利用此漏洞,攻击者可以实现远程代码执行,完全控制受影响的服务器,CVSS评分为9.8(严重)。

CVE-2026-40860-ApacheCamel-JMS反序列化RCE

漏洞类型:不安全的反序列化影响应用:Apache Camel危害等级:严重,可导致远程代码执行,完全控制服务器影响版本:camel-jms/camel-sjms/camel-sjms2/camel-amqp/camel-activemq/camel-activemq6 从3.0.0到4.14.7之前,从4.15.0到4.18.2之前,从4.19.0到4.20.0之前利用条件:需要目标应用作为JMS消费者运行,并且攻击者能够向目标消费的队列或主题发布消息。同时目标应用的类路径中需要存在可用于反序列化的Gadget链(如CommonsCollections)。POC 可用性:是投毒风险:1%项目地址:oscerd/CVE-2026-40860漏洞详情:NVD数据库

详情

该漏洞是Apache Camel中多个JMS相关组件(包括camel-jms、camel-sjms、camel-sjms2、camel-amqp、camel-activemq和camel-activemq6)存在的一个严重的不安全反序列化漏洞,被分配编号CVE-2026-40860。漏洞的核心成因在于camel-jms组件中的JmsBinding.extractBodyFromJms()方法,以及camel-sjms组件中对应的JmsBinding类,在处理接收到的JMS ObjectMessage时,直接调用了javax.jms.ObjectMessage.getObject()方法进行反序列化。getObject()方法默认会使用Java原生的ObjectInputStream.readObject()来解析消息体中的二进制数据,而Camel在这些组件的处理逻辑中,并未在调用getObject()之前或之后施加任何有效的ObjectInputFilter、类白名单或黑名单来限制可被反序列化的类。这意味着,当Camel应用作为JMS消费者,并且其mapJmsMessage选项保持默认的true状态时(这是默认配置),任何接收到ObjectMessage类型的JMS消息,其消息体中的对象都会被无差别地反序列化。攻击者如果能够向目标Camel应用所监听的JMS队列或主题中发布一条精心构造的ObjectMessage,该消息的载荷中包含一个恶意的反序列化Gadget链。当Camel消费者消费这条消息,并触发extractBodyFromJms方法进行反序列化时,这个Gadget链会在反序列化过程中自动执行,导致攻击者可以在目标服务器上执行任意代码。该漏洞的影响范围不仅限于camel-jms,还通过继承关系影响到了camel-sjms2(因为Sjms2Endpoint继承自SjmsEndpoint)和camel-amqp(因为AMQPJmsBinding继承自JmsBinding),以及其他基于JmsComponent构建的组件,如camel-activemq和camel-activemq6,使得该漏洞的潜在影响面十分广泛。成功利用此漏洞,攻击者可以实现远程代码执行,完全控制受影响的服务器,CVSS评分为9.8(严重)。

漏洞利用

该漏洞的利用方式是基于Java反序列化攻击。攻击流程如下:

  1. \\环境准备\\:攻击者需要先识别出目标环境是否使用了存在漏洞的Apache Camel版本,并确认其作为一个JMS消费者运行,监听一个攻击者可以发布消息的队列或主题。此外,攻击者需要分析目标应用运行时的类路径(classpath),确认是否存在可用于反序列化攻击的Gadget库(例如commons-collections:3.2.1、commons-beanutils等)。
  2. \\构造恶意对象\\:攻击者使用工具如ysoserial或手动编写Java代码,根据目标环境中存在的Gadget链,生成一个序列化后的字节流,该字节流在反序列化时会执行攻击者预设的命令(例如,反向Shell、执行系统命令、写入文件等)。
  3. \\发送恶意JMS消息\\:攻击者作为JMS客户端,连接到同一个JMS代理(如ActiveMQ、Artemis等),并向目标Camel应用正在监听的队列或主题发送一个ObjectMessage,并将上一步生成的恶意字节流作为该消息的载荷。在某些环境中,JMS代理可能默认或配置为trustAllPackages=true(即信任所有包),这会让代理允许反序列化任何类,从而使得攻击步骤更加容易。
  4. \\触发反序列化\\:目标Camel应用作为消费者,从队列中拉取或接收到这条恶意消息。当Camel的JmsBinding.extractBodyFromJms()方法被调用处理此消息时,它会调用ObjectMessage.getObject()。这触发了JMS提供商的ObjectInputStream.readObject(),开始反序列化攻击者构造的恶意载荷。
  5. \\远程代码执行\\:在反序列化过程中,Gadget链被激活,执行了攻击者预设的命令,从而实现远程代码执行。

\\POC说明\\:提供的POC代码完整地复现了上述攻击流程。

\ \\受害者\\*:POC使用camel-jms:4.18.1版本创建了一个Camel JMS消费者,监听名为evil的队列。为了简化演示,POC将一个包含CommonsCollections6 Gadget链的依赖commons-collections:3.2.1显式地添加到了项目类路径中。

\ \\攻击者\\*:POC通过一个ExploitController(一个HTTP端点)模拟攻击者。当访问/exploit/attack时,该控制器会创建一个ObjectMessage,并将其载荷设置为在内存中构建的CommonsCollections6 Gadget对象(这个Gadget链会执行touch /tmp/pwned命令)。然后,它将这个ObjectMessage发布到evil队列。

\ \\验证\\*:消费者消费消息后,反序列化被执行,/tmp/pwned文件被创建。通过检查该文件是否存在即可验证漏洞利用成功。POC文件中的Dockerfile和docker-compose.yml配置了一个完整的运行环境,包括一个Apache ActiveMQ Artemis代理和漏洞应用,使得整个复现过程可以一键式启动。

修复建议

Apache官方已发布修复版本,对应的修复版本为:4.14.7(针对4.14.x LTS版本)、4.18.2(针对4.18.x版本)和4.20.0(最新版本)。用户应尽快将受影响的组件升级到这些修复版本。

加固方法:

  1. \\升级Camel版本\\:按照官方建议升级到4.14.7、4.18.2或4.20.0。这些版本默认添加了一个ObjectInputFilter白名单(java.\\*\\*;javax.\\*\\*;org.apache.camel.\\*\\*;!\\*),可以有效阻止Camel不期望的类被反序列化,从而阻断大部分Gadget链。
  2. \\配置JVM级别的反序列化过滤器\\:在应用启动时,通过JVM参数-Djdk.serialFilter设置一个全局的白名单过滤器,例如-Djdk.serialFilter=java.\\*\\*;org.apache.camel.\\*\\*;!\\*。这是最根本的防护措施,可以阻止任何未授权的类反序列化。
  3. \\配置JMS提供商的反序列化过滤\\:对于ActiveMQ等JMS提供商,应严格配置其trustedPackages选项,只允许信任的包中的类进行反序列化。严禁在生产环境中设置trustAllPackages=true,这等于完全开放了反序列化攻击的入口。
  4. \\使用新的端点选项\\:在修复版本中,Camel引入了新的端点选项deserializationFilter,允许用户为特定的JMS端点单独配置反序列化过滤器,从而实现更精细的控制。
  5. \\临时缓解措施\\:

\ \\避免使用ObjectMessage\\*:如果业务允许,可以配置Camel JMS消费者,使用mapJmsMessage=false来禁用ObjectMessage的反序列化,转而使用TextMessage、BytesMessage等更安全的消息类型。

\ \\移除危险库\\*:从应用的类路径中移除不必要且已知可用于构造Gadget链的库,如commons-collections、commons-beanutils、spring-aop等旧版本。

\ \\网络隔离\\*:限制不受信任的网络实体对JMS代理的访问,特别是禁止他们向关键队列发布消息。

-

相关仓库

  1. oscerd/CVE-2026-40860

URL:https://github.com/oscerd/CVE-2026-40860

描述:Reproducer for CVE-2026-40860 — Apache Camel camel-jms/sjms/amqp JMS ObjectMessage unsafe deserialization (RCE)


CVE-2026-40860-ApacheCamel-JMS反序列化RCE漏洞分析报告" 网络安全文章

CVE-2026-40860-ApacheCamel-JMS反序列化RCE漏洞分析报告"

CVE-2026-40860是ApacheCamel中多个JMS组件存在的严重不安全反序列化漏洞,CVSS评分9.8。漏洞源于JmsBinding.extractBodyFromJms()方法在处理ObjectMessage时未加过滤直接反序列化,攻击者可构造恶意消息实现远程代码执行。影响版本包括camel-jms等组件从3.0.0到4.20.0之前版本。官方已发布修复版本4.14.7、4.18.2和4.20.0,建议立即升级并配置反序列化过滤器。
【船舶网络安全系列】一文读懂中国船级社船舶网络安全指南(五)" 网络安全文章

【船舶网络安全系列】一文读懂中国船级社船舶网络安全指南(五)"

本文解读中国船级社船舶网络安全指南中数据保密性、受限数据流、事件及时响应和资源可用性等安全要求。详细阐述了信息保密性、持久性、加密、网络分段、区域边界保护、系统外通信限制、应用分区、审计日志、持续监控、抗DoS、资源管理和系统备份等要求,并提供了验证流程、实施方法和解决方案。指南强调根据安全等级SL0-SL4实施不同强度的防护措施。
深度学习:改变人工智能格局的技术革命,从AlexNet到大语言模型" 网络安全文章

深度学习:改变人工智能格局的技术革命,从AlexNet到大语言模型"

深度学习自2012年AlexNet在ImageNet夺冠后引发范式转移,核心是用多层神经网络自动学习层次化特征。其成功依赖大数据、大算力、大模型三大支柱,关键架构从CNN、RNN演进到Transformer,催生大语言模型等应用。深度学习同时改变了工业界和科学界,如AlphaFold预测蛋白质结构,但革命远未结束,正重新定义智能本质。
CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行" 网络安全文章

CVE-2026-54390-JTL-Shop-Smarty-SSTI-远程代码执行"

CVE-2026-54390是JTLShop5.2.0至5.7.1版本中的严重SSTI漏洞(CVSS9.8)。攻击者可通过联系表单注入Smarty模板语法,利用未过滤的输入触发远程代码执行,实现服务器完全控制。5.4.0+版本因注册危险修饰符(如file_get_contents)导致风险更高。建议立即升级至5.5.4/5.6.2/5.7.2修复版本。
评论:0   参与:  0