Skip to main content

c3p0 CVE-2026-27830

HIGH
Code Injection (CWE-94)
2026-02-26 security-advisories@github.com GHSA-5476-xc4j-rqcv
8.9
CVSS 4.0 · Vendor: github
Share

Severity by source

Vendor (github) PRIMARY
8.9 HIGH
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
vuln.today AI
8.5 HIGH

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.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:P/PR:L/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
SUSE
8.0 HIGH
AV:A/AC:H/PR:L/UI:N/S:C/C:H/I:H/A:H
Red Hat
8.0 HIGH
qualitative

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
Attack Vector
Adjacent
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
X

Lifecycle Timeline

9
Analysis Updated
Jun 30, 2026 - 05:18 vuln.today
v5 (cvss_changed)
Analysis Updated
Jun 30, 2026 - 05:18 vuln.today
v4 (cvss_changed)
Analysis Updated
Jun 30, 2026 - 05:17 vuln.today
v3 (cvss_changed)
Analysis Updated
Jun 30, 2026 - 05:16 vuln.today
v2 (cvss_changed)
Re-analysis Queued
Jun 30, 2026 - 03:23 vuln.today
cvss_changed
CVSS changed
Jun 30, 2026 - 03:23 NVD
8.9 (HIGH)
Patch released
Mar 31, 2026 - 21:13 nvd
Patch available
Analysis Generated
Mar 12, 2026 - 21:55 vuln.today
CVE Published
Feb 26, 2026 - 01:16 nvd
N/A

Blast Radius

ecosystem impact
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 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.

More in Java

View all
CVE-2012-4681 CRITICAL POC
9.8 Aug 28

Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m

CVE-2015-7450 CRITICAL POC
9.8 Jan 02

Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti

CVE-2013-2465 CRITICAL POC
9.8 Jun 18

Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent

CVE-2011-3544 CRITICAL POC
9.8 Oct 19

Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug

CVE-2010-1871 HIGH POC
8.8 Aug 05

JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to

CVE-2012-1723 CRITICAL POC
9.8 Jun 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up

CVE-2013-0422 CRITICAL POC
9.8 Jan 10

Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using

CVE-2012-0507 CRITICAL POC
9.8 Jun 07

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up

CVE-2015-4852 CRITICAL POC
9.8 Nov 18

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

CVE-2012-5076 CRITICAL POC
9.8 Oct 16

Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow

CVE-2017-3066 CRITICAL POC
9.8 Apr 27

Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla

CVE-2012-0391 CRITICAL POC
9.8 Jan 08

The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during

Vendor 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

Share

CVE-2026-27830 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy