Every CVE Search/ Get API key

CVE-2026-55153

mchange-commons-java contains elements susceptible to abuse via JNDI injection and "deserialization gadgets"

7.1 HighFix available

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Attack profile

How easy it is to exploit

Attack vector
Adjacent network
Complexity
High
Privileges needed
Low
User interaction
None

What an attacker can affect

Confidentiality
High
Integrity
High
Availability
High

Exploit likelihood

0.19%Down 0.1 points since Jul 2, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.1

mchange-commons-java contains elements susceptible to abuse via JNDI injection and "deserialization gadgets"

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Record
CVE-2026-55153
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-502, CWE-470
Updated
2026-11-02
EUVDEUVD-2026-41135 7.1

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Record
EUVD-2026-41135
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-h84g-69h7-mw6v 7.1

mchange-commons-java contains elements susceptible to abuse via JNDI injection and "deserialization gadgets"

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…

Record
GHSA-h84g-69h7-mw6v
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-470
Updated
2026-11-02
NVD 7.1

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Record
CVE-2026-55153
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-470, CWE-502
Updated
2026-11-02
OSV 7.1

mchange-commons-java contains elements susceptible to abuse via JNDI injection and "deserialization gadgets"

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Record
CVE-2026-55153
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-470, CWE-502
Updated
2026-11-02
OSVGHSA-h84g-69h7-mw6v 7.1

mchange-commons-java contains elements susceptible to abuse via JNDI injection and "deserialization gadgets"

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…

Record
GHSA-h84g-69h7-mw6v
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Weakness
CWE-470
Updated
2026-11-02
Show 5 moreShow less
OSVUBUNTU-CVE-2026-55153 7.1

mchange-commons-java is a Java library of shared utility classes used by mchange projects like the c3p0 connection pool. Prior to version 0.6.0, its JNDI ObjectFactory implementation (com.mchange.v2.naming.JavaBeanObjectFactory) will construct objects of arbitrary classes and initialize "JavaBean"-style properties, which for certain classes enables JNDI injection and "deserialization gadgets." Such initialization is unsafe for some classes: for example, setting the contentType property of a Swing JEditorPane to text/html and its text property to HTML containing a stylesheet <link> will provoke an HTTP GET on an arbitrary URL, potentially from within a trusted security domain. The problem is aggravated by the library's ReferenceIndirector, through which malicious JNDI Reference objects can be smuggled in for dereferencing wherever an application reads a Java-serialized object. This has been resolved in version 0.6.0.

Record
UBUNTU-CVE-2026-55153
CVSS 3.1
7.1 HighCVSS:3.1/AV:A/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H
Updated
2026-11-02
OSVCLSA-2026-1786542819 No score

TuxCare security update for com.mchange:mchange-commons-java (1 CVE)

TuxCare rebuilt com.mchange:mchange-commons-java to address 1 CVE. Fixed in 0.2.20-tuxcare.2.

Record
CLSA-2026-1786542819
Updated
2026-11-02
OSVCLSA-2026-1786594683 No score

TuxCare security update for com.mchange:mchange-commons-java (1 CVE)

TuxCare rebuilt com.mchange:mchange-commons-java to address 1 CVE. Fixed in 0.2.19-tuxcare.2.

Record
CLSA-2026-1786594683
Updated
2026-11-02
OSVCLSA-2026-1788238245 No score

TuxCare security update for com.mchange:mchange-commons-java (1 CVE)

TuxCare rebuilt com.mchange:mchange-commons-java to address 1 CVE. Fixed in 0.2.15-tuxcare.2.

Record
CLSA-2026-1788238245
Updated
2026-11-02
OSVUSN-8642-1 No score

c3p0 vulnerabilities

It was discovered that c3p0 was vulnerable to remote code execution via maliciously crafted serialized objects and JNDI references. An attacker could use this to execute arbitrary code, bypass security restrictions, or cause a denial of service.

Record
USN-8642-1
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
com.mchange:mchange-commons-java
Maven
before 0.6.0
0.6.0
com.mchange:mchange-commons-java
TuxCare:Maven
0.2.20 up to 0.2.20-tuxcare.2, plus listed versions
0.2.20-tuxcare.1
0.2.20-tuxcare.2
com.mchange:mchange-commons-java
TuxCare:Maven
0.2.19 up to 0.2.19-tuxcare.2, plus listed versions
0.2.19-tuxcare.1
0.2.19-tuxcare.2
com.mchange:mchange-commons-java
TuxCare:Maven
0.2.15 up to 0.2.15-tuxcare.2, plus listed versions
0.2.15-tuxcare.1
0.2.15-tuxcare.2
com.mchange:mchange-commons-java
Maven
before 0.6.0, plus listed versions
0.2.1-RELEASE0.2.100.2.110.2.120.2.13
Show 28 moreShow less
0.2.140.2.150.2.160.2.170.2.180.2.190.2.20.2.200.2.30.2.3.10.2.3.20.2.3.30.2.3.40.2.40.2.50.2.60.2.6.10.2.6.20.2.6.30.2.6.50.2.70.2.80.2.90.3.00.3.10.3.20.4.00.5.0
0.6.0
c3p0
Ubuntu:Pro:16.04:LTS
before 0.9.1.2-9+deb8u1ubuntu0.16.04.1~esm2, plus listed versions
0.9.1.2-90.9.1.2-9+deb8u1build0.16.04.10.9.1.2-9+deb8u1ubuntu0.16.04.1~esm1
0.9.1.2-9+deb8u1ubuntu0.16.04.1~esm2
c3p0
Ubuntu:Pro:18.04:LTS
before 0.9.1.2-9+deb8u1ubuntu0.18.04.1+esm1, plus listed versions
0.9.1.2-90.9.1.2-9+deb8u1build0.18.04.10.9.1.2-9+deb8u1ubuntu0.18.04.1
0.9.1.2-9+deb8u1ubuntu0.18.04.1+esm1
c3p0
Ubuntu:Pro:20.04:LTS
before 0.9.1.2-10ubuntu0.20.04.1+esm1, plus listed versions
0.9.1.2-100.9.1.2-10ubuntu0.20.04.1
0.9.1.2-10ubuntu0.20.04.1+esm1
c3p0
Ubuntu:Pro:22.04:LTS
before 0.9.1.2-10ubuntu1+esm1, plus listed versions
0.9.1.2-100.9.1.2-10ubuntu1
0.9.1.2-10ubuntu1+esm1
c3p0
Ubuntu:Pro:24.04:LTS
before 0.9.1.2-10ubuntu2+esm1, plus listed versions
0.9.1.2-10ubuntu10.9.1.2-10ubuntu2
0.9.1.2-10ubuntu2+esm1
Show 8 moreShow less
Affected packages
PackageAffectedFixed
c3p0
Ubuntu:25.10
All versions, plus listed versions
0.9.1.2-10ubuntu2
None known
c3p0
Ubuntu:26.10
All versions, plus listed versions
0.9.1.2-11
None known
c3p0
Ubuntu:Pro:26.04:LTS
before 0.9.1.2-11ubuntu0.1~esm1, plus listed versions
0.9.1.2-10ubuntu20.9.1.2-11
0.9.1.2-11ubuntu0.1~esm1
c3p0
Ubuntu:Pro:18.04:LTS
From an advisory covering 4 CVEs
before 0.9.1.2-9+deb8u1ubuntu0.18.04.1+esm1, plus listed versions
0.9.1.2-90.9.1.2-9+deb8u1build0.18.04.10.9.1.2-9+deb8u1ubuntu0.18.04.1
0.9.1.2-9+deb8u1ubuntu0.18.04.1+esm1
c3p0
Ubuntu:Pro:20.04:LTS
From an advisory covering 4 CVEs
before 0.9.1.2-10ubuntu0.20.04.1+esm1, plus listed versions
0.9.1.2-100.9.1.2-10ubuntu0.20.04.1
0.9.1.2-10ubuntu0.20.04.1+esm1
c3p0
Ubuntu:Pro:22.04:LTS
From an advisory covering 4 CVEs
before 0.9.1.2-10ubuntu1+esm1, plus listed versions
0.9.1.2-100.9.1.2-10ubuntu1
0.9.1.2-10ubuntu1+esm1
c3p0
Ubuntu:Pro:24.04:LTS
From an advisory covering 4 CVEs
before 0.9.1.2-10ubuntu2+esm1, plus listed versions
0.9.1.2-10ubuntu10.9.1.2-10ubuntu2
0.9.1.2-10ubuntu2+esm1
c3p0
Ubuntu:Pro:26.04:LTS
From an advisory covering 4 CVEs
before 0.9.1.2-11ubuntu0.1~esm1, plus listed versions
0.9.1.2-10ubuntu20.9.1.2-11
0.9.1.2-11ubuntu0.1~esm1

History

History
RecordedChangedSources
affected, facts
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-55153 is a high vulnerability (CVSS 7.1) in Swaldman Mchange-commons-java, published July 1, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.19%, the 9th percentile. Fixed in com.mchange:mchange-commons-java 0.6.0.

References

Show 5 moreShow less
This page doesn't list everything

Left out here: the rest of 2 source descriptions. The JSON record has them.

MoveEnter Open