GHSA-h84g-69h7-mw6v: High severity maven/com.mchange:mchange-commons-java vulnerability

Published Aug 14, 2026
·
Updated

Impact Prior to version 0.6.0, mchange-commons-java includes a JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) willing to construct objects of arbitrary classes and initialize "JavaBean"-style properties. There are classes for which this kind of initialization is unsafe. For example, setting the "contentType" property of a Swing JEditorPane to text/html and the "text" property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. This issue is aggravated by mchange-commons-java's ReferenceIndirector, by which malicious JNDI Reference objects could be smuggled in for dereferencing by applications anywhere a Java-serialized object might be read.

Prior to version 0.5.0, the same mchange-commons-java ObjectFactory would interpret BinaryRefAddress elements as Java-serialized objects, and deserialize unexpected objects that potentially execute malicious behavior on initialization. Although this author is unaware of any code within mchange-commons-java itself that can be abused to execute code on deserialization, this mechanism can be used to trigger well-known "deserialization gadget chains" involving other libraries. For example, in JVMs prior to Java 16 with Apache libraries commons-beanutils and commons-collections on the application CLASSPATH, objects can be crafted that will execute arbitrary commands on deserialization. (Thanks to Valerio Mulas for a proof-of-concept.)

Patches mchange-commons-java v0.5.0 eliminates all support for deserializing Java objects in com.mchange.v2.naming.JavaBeanObjectFactory, unless an application explicitly extends that class to restore it. This prevents mchange-commons-java from enabling JNDI injection to trigger common "deserialization gadgets".

mchange-commons-java v0.6.0 imposes a whitelist upon what classes com.mchange.v2.naming.JavaBeanObjectFactory consents to materialize, preventing the use of maliciously constructed Reference instances to initialize arbitrary, potentially malicious, objects.

mchange-commons-java v0.6.0 disables the ReferenceIndirector mechanism by default. This mechanism has been abused by attackers to inject dangerous JNDI Reference objects by causing an application to deserialize a malicious Java-serialized object. (The functionality remains for applications that need it, gated behind a restrictive configuration parameter. This is "defense-in-depth"; the hardening of JavaBeanObjectFactory on its own should be sufficient to prevent known Reference-based attacks. But perhaps there are other insecure ObjectFactory implementations on the CLASSPATH or vulnerabilities as-yet-unknown.)

Workarounds Upgrading to the current version of mchange-commons-java is strongly recommended. Most applications that install mchange-commons-java do so to support the c3p0 JDBC Connection pooling library. When upgrading mchange-commons-java, be sure to update c3p0 as well, or better yet, upgrade to c3p0 >=v0.14.0 and bring in a patched mchange-commons-java transitively.

Maintaining rigorous serialization filters can prevent many attacks (but not attacks requiring only construction of a named class and initialization of simple JavaBeans properties, as described for JEditorPane above).

The vulnerabilities that this advisory addresses all begin with arranging for an application to lookup a malicious JNDI Reference or deserialize a malicious Java-serialized object. Assiduously preventing an application from ever encountering such a Reference or serialized object is hypothetically a workaround. But relying upon perfection is usually bad planning.

The most common known attacks rely upon JVM-internal XSLT code that has been made inaccessible on Java 16 and beyond. Running on a more recent JVM is a mitigating workaround.

Resources The vulnerabilities and security upgrades are documented in c3p0's manual. Please see c3p0's Security Note and Configuring Security.

Credits mchange-commons-java thanks 4ra1n and unam4 on Github for a proof-of-concept.

Affected Software

1 affected componentFixes available
maven/com.mchange:mchange-commons-java<0.6.0
0.6.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade maven/com.mchange:mchange-commons-java to a version that resolves this vulnerability.

    Fixed in 0.6.0
  2. Upgrade

    Upgrade mchange-commons-java to a version that resolves this vulnerability.

    Fixed in 0.6.0
  3. Upgrade

    Upgrade c3p0 to a version that resolves this vulnerability.

    Fixed in 0.14.0
  4. Configuration

    Upgrade to mchange-commons-java v0.6.0 so the ReferenceIndirector mechanism is disabled by default.

    mchange-commons-java (com.mchange.v2.naming.JavaBeanObjectFactory) ReferenceIndirector = disabled (default in v0.6.0)
  5. Configuration

    Upgrade to mchange-commons-java v0.6.0 to impose a whitelist on what classes JavaBeanObjectFactory can materialize, preventing malicious Reference-based object initialization.

    mchange-commons-java (com.mchange.v2.naming.JavaBeanObjectFactory) whitelist of materializable classes = enforced (prevents initialization of arbitrary classes) in v0.6.0
  6. Configuration

    Upgrade to mchange-commons-java v0.5.0 or later so JavaBeanObjectFactory eliminates support for deserializing Java objects (unless an application explicitly extends the class to restore it).

    mchange-commons-java (com.mchange.v2.naming.JavaBeanObjectFactory) support for deserializing Java objects in JavaBeanObjectFactory = removed in v0.5.0

Event History

Aug 14, 2026
Advisory Published
via GitHub·07:29 PM
Data Sourced
via GitHub·07:29 PM
DescriptionSeverityWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of GHSA-h84g-69h7-mw6v?

The severity of GHSA-h84g-69h7-mw6v is rated as high with a score of 7.1.

2

How do I fix GHSA-h84g-69h7-mw6v?

To fix GHSA-h84g-69h7-mw6v, upgrade to mchange-commons-java version 0.6.0 or later.

3

What are the potential impacts of GHSA-h84g-69h7-mw6v?

The potential impacts of GHSA-h84g-69h7-mw6v include unauthorized object instantiation and arbitrary property initialization.

4

Which software is affected by GHSA-h84g-69h7-mw6v?

The software affected by GHSA-h84g-69h7-mw6v is mchange-commons-java prior to version 0.6.0.

5

When was GHSA-h84g-69h7-mw6v published?

GHSA-h84g-69h7-mw6v was published on August 14, 2026.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203