c3p0 CVE-2026-27830
HIGHSeverity by source
CVSS:4.0/AV:A/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Exploitation requires control of DataSource config or a JNDI-injectable Reference (PR:L, AC:H) and yields RCE crossing into the runtime environment via remote codebase (S:C), with full C/I/A impact.
AV:A/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
Primary rating from Vendor (github).
CVSS VectorVendor: github
CVSS:4.0/AV:A/AC:L/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Lifecycle Timeline
9Blast Radius
ecosystem impact- 95 maven packages depend on com.mchange:c3p0 (17 direct, 78 indirect)
Ecosystem-wide dependent count for version 0.12.0.
DescriptionCVE.org
c3p0, a JDBC Connection pooling library, is vulnerable to attack via maliciously crafted Java-serialized objects and javax.naming.Reference instances. Several c3p0 ConnectionPoolDataSource implementations have a property called userOverridesAsString which conceptually represents a Map<String,Map<String,String>>. Prior to v0.12.0, that property was maintained as a hex-encoded serialized object. Any attacker able to reset this property, on an existing ConnectionPoolDataSource or via maliciously crafted serialized objects or javax.naming.Reference instances could be tailored execute unexpected code on the application's CLASSPATH. The danger of this vulnerability was strongly magnified by vulnerabilities in c3p0's main dependency, mchange-commons-java. This library includes code that mirrors early implementations of JNDI functionality, including ungated support for remote factoryClassLocation values. Attackers could set c3p0's userOverridesAsString hex-encoded serialized objects that include objects "indirectly serialized" via JNDI references. Deserialization of those objects and dereferencing of the embedded javax.naming.Reference objects could provoke download and execution of malicious code from a remote factoryClassLocation. Although hazard presented by c3p0's vulnerabilites are exarcerbated by vulnerabilities in mchange-commons-java, use of Java-serialized-object hex as the format for a writable Java-Bean property, of objects that may be exposed across JNDI interfaces, represents a serious independent fragility. The userOverridesAsString property of c3p0 ConnectionPoolDataSource classes has been reimplemented to use a safe CSV-based format, rather than rely upon potentially dangerous Java object deserialization. c3p0-0.12.0+ and above depend upon mchange-commons-java 0.4.0+, which gates support for remote factoryClassLocation values by configuration parameters that default to restrictive values. c3p0 additionally enforces the new mchange-commons-java com.mchange.v2.naming.nameGuardClassName to prevent injection of unexpected, potentially remote JNDI names. There is no supported workaround for versions of c3p0 prior to 0.12.0.
AnalysisAI
Remote code execution in c3p0 (a Java JDBC connection-pooling library) before v0.12.0 allows an attacker who can set the userOverridesAsString property of a ConnectionPoolDataSource - or inject a crafted serialized object or javax.naming.Reference - to load and run arbitrary code on the application's CLASSPATH. The flaw stems from storing this writable Java-Bean property as a hex-encoded Java-serialized object, and is amplified by its dependency mchange-commons-java, which mirrored legacy JNDI behavior with ungated support for remote factoryClassLocation values, enabling download and execution of attacker-hosted classes. EPSS is low (0.15%) and there is no public exploit identified at time of analysis, though deserialization/JNDI gadget techniques against this library are publicly documented.
Technical ContextAI
c3p0 is a mature JDBC DataSource/ConnectionPoolDataSource connection-pool implementation widely embedded in Java/Hibernate applications. The root cause is CWE-94 (code injection) arising from unsafe Java deserialization: the userOverridesAsString bean property, conceptually a Map<String,Map<String,String>>, was persisted as a hex-encoded serialized object stream. Because such DataSources are frequently exposed across JNDI, the property value can be reconstructed via Object deserialization and any embedded javax.naming.Reference can be dereferenced. The dependency mchange-commons-java reimplemented early JNDI semantics including remote factoryClassLocation, so a Reference can point at a remote codebase URL; dereferencing it fetches and instantiates an attacker-controlled factory class - the classic JNDI/codebase RCE primitive. The fix (0.12.0) replaces the serialized-hex format with a safe CSV encoding, requires mchange-commons-java 0.4.0+ which gates remote factoryClassLocation behind restrictive-by-default config, and enforces a com.mchange.v2.naming.nameGuardClassName guard against unexpected/remote JNDI names.
Affected ProductsAI
c3p0 (the swaldman/c3p0 JDBC connection-pooling library) in all versions prior to 0.12.0 is affected, including its bundled/transitive use of mchange-commons-java prior to 0.4.0. Red Hat ships c3p0 within multiple products and has published errata RHSA-2026:18054, RHSA-2026:18055, RHSA-2026:18059, RHSA-2026:28385, RHSA-2026:3890 and RHSA-2026:4285, tracked via Bugzilla 2442908 and the Red Hat CVE page (https://access.redhat.com/security/cve/CVE-2026-27830) and VEX feed. The authoritative advisory is GitHub GHSA-5476-xc4j-rqcv (https://github.com/swaldman/c3p0/security/advisories/GHSA-5476-xc4j-rqcv) with vendor security notes at https://www.mchange.com/projects/c3p0/#security-note. No CPE strings were provided in the input, so exact platform CPE ranges should be confirmed against NVD.
RemediationAI
Vendor-released patch: c3p0 0.12.0 - upgrade c3p0 to 0.12.0 or later, which also pulls in mchange-commons-java 0.4.0+ (the fix changes userOverridesAsString to a safe CSV format, gates remote factoryClassLocation to restrictive defaults, and enforces the com.mchange.v2.naming.nameGuardClassName guard). For Red Hat distributions, apply the corresponding errata (RHSA-2026:18054 / 18055 / 18059 / 28385 / 3890 / 4285) per product. The vendor explicitly states there is no supported workaround for versions prior to 0.12.0, so upgrading is the only reliable fix; if an upgrade cannot be deployed immediately, compensating controls are to ensure DataSource/pool configuration (including any userOverridesAsString value) comes only from trusted, static sources and is never populated from user-controlled input or untrusted deserialization, and to prevent c3p0 DataSources from being resolved through JNDI lookups that can reference attacker-controlled factoryClassLocation URLs - e.g. block outbound network access from app servers to untrusted LDAP/RMI/HTTP codebase endpoints. The trade-off is that locking down JNDI/codebase resolution and config sources can break legitimate dynamic JNDI deployments and must be validated. Refer to the GHSA-5476-xc4j-rqcv advisory and https://www.mchange.com/projects/c3p0/#configuring_security.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-94 – Code Injection
View allSame technique Deserialization
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| Container suse/manager/4.3/proxy-httpd:4.3.17.9.76.1 | Affected |
| Container suse/manager/5.0/x86_64/server-attestation:latest Container suse/manager/5.0/x86_64/server:latest Container suse/multi-linux-manager/5.1/x86_64/server-attestation:5.1.3.8.18.1 Container suse/multi-linux-manager/5.1/x86_64/server:5.1.3.8.16.1 Image server-attestation-image Image server-image Image server-image-sles15sp7 | Affected |
| SUSE Manager Proxy LTS 4.3 | Fixed |
| SUSE Manager Retail Branch Server LTS 4.3 | Fixed |
| SUSE Manager Server LTS 4.3 | Fixed |
| openSUSE Leap 15.6 | Fixed |
| SUSE Manager Proxy 4.3 | Affected |
| SUSE Manager Proxy LTS 4.3 | Affected |
| SUSE Manager Retail Branch Server 4.3 | Affected |
| SUSE Manager Retail Branch Server LTS 4.3 | Affected |
| SUSE Manager Server 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| SUSE Manager Server LTS 4.3 | Affected |
| SUSE Manager Server Module 4.3 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.4 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
| SUSE Manager Proxy 4.3 LTS | Affected |
| SUSE Manager Retail Branch Server 4.3 LTS | Affected |
| SUSE Manager Server 4.3 LTS | Affected |
| SUSE Manager Server 4.3 LTS | Affected |
| suse/manager/5.0/x86_64/server suse/manager/5.0/x86_64/server-attestation suse/multi-linux-manager/5.1/x86_64/server suse/multi-linux-manager/5.1/x86_64/server-attestation suse/multi-linux-manager/5.2/x86_64/server suse/multi-linux-manager/5.2/x86_64/server-attestation | Affected |
| suse/manager/4.3/proxy-httpd | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
GHSA-5476-xc4j-rqcv