Apache Camel JMS组件反序列化漏洞:绕过修复、可注入任意Exchange状态
CVE-2026-43866 Apache Camel JMS反序列化漏洞,CVSS 7.3。攻击者利用DefaultExchangeHolder绕过CVE-2026-40860修复,注入任意Exchange状态。影响camel-jms、camel-sjms等组件,无需gadget链。升级至4.21.0禁用ObjectMessage可防御。安全分析报告。
🔓 High 漏洞利用
CVE-2026-43866是一个影响Apache Camel JMS(camel-jms、camel-sjms等)组件的反序列化漏洞,攻击者可通过向队列或主题发布特制的JMS ObjectMessage,利用允许列表中的DefaultExchangeHolder类绕过CVE-2026-40860的修复,无需任何反序列化gadget链即可向Exchange注入任意状态,进而操纵路由、头、属性和错误处理。
来源:NVD-Latest | 2026-07-06 | 原文链接
🔍 关键发现
- 漏洞本质是CVE-2026-40860修复的绕过:DefaultExchangeHolder位于org.apache.camel.**允许列表中,可被用作顶层反序列化对象。
- 攻击者只需使用java.lang和java.util等通用信任类即可构造payload,无需复杂的反序列化gadget链。
- 影响范围广:camel-jms、camel-sjms、camel-amqp、camel-activemq等多个JMS组件,覆盖多个版本分支(3.0.0至4.21.0之前)。
⚔️ 攻击链分析
1. 攻击者向目标Camel应用监听的JMS队列或主题发布一条ObjectMessage,其payload为org.apache.camel.support.DefaultExchangeHolder实例。 2. Camel消费者默认启用mapJmsMessage,调用JmsBinding.extractBodyFromJms()时反序列化该消息,通过类检查(因为DefaultExchangeHolder在允许列表中)。 3. 接收端自动调用DefaultExchangeHolder.unmarshal()(无需transferExchange选项),将holder中的消息体、IN/OUT头、Exchange属性、变量、Exchange ID、异常等全部写入Exchange。 4. 攻击者通过这些注入的字段影响路由决策、错误处理逻辑或触发后续恶意行为。
🚩 失陷指标 (IOC)
无已知IOC(漏洞利用不依赖特定文件或网络指标,需监控JMS消息内容和异常Exchange行为)建议关注JMS队列中异常的ObjectMessage,特别是顶层类为DefaultExchangeHolder的消息
🛡️ 缓解建议
- ✅ 立即升级至Apache Camel 4.21.0(或4.14.8/4.18.3对应LTS分支),新版本默认禁用JMS ObjectMessage处理(objectMessageEnabled=false)。
- ✅ 无法升级时,通过JMS broker授权限制发布权限,仅允许受信任的生产者写入消费队列/主题,且不将JMS消费者暴露给不可信网络。
涉及漏洞:["CVE-2026-43866"]
⚠️ 本文仅供安全研究与学习,IOC 信息请勿用于非法目的。
🤖 常见问题解答(FAQ)
❓ 如何检测环境中是否存在此漏洞?
检查Apache Camel及JMS组件版本是否在受影响范围(<4.14.8、<4.18.3、<4.21.0),并确认objectMessageEnabled是否为默认true。
❓ 攻击者利用此漏洞需要什么条件?
攻击者必须能够向Camel消费的JMS队列或主题发布ObjectMessage,且Camel未升级且mapJmsMessage为默认启用。
❓ 升级后如何安全启用ObjectMessage?
升级后objectMessageEnabled默认为false,仅当JMS目的地完全由受信任的生产者控制时,才显式设为true。