FKIE_CVE-2026-27830
Vulnerability from fkie_nvd - Published: 2026-02-26 01:16 - Updated: 2026-04-15 00:35
Severity ?
Summary
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.
References
Impacted products
| Vendor | Product | Version |
|---|
{
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "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\u003cString,Map\u003cString,String\u003e\u003e`. 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\u0027s `CLASSPATH`. The danger of this vulnerability was strongly magnified by vulnerabilities in c3p0\u0027s 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\u0027s `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\u0027s 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."
},
{
"lang": "es",
"value": "c3p0, una biblioteca de pooling de conexiones JDBC, es vulnerable al ataque a trav\u00e9s de objetos serializados en Java creados maliciosamente e instancias de `javax.naming.Reference`. Varias implementaciones de `ConnectionPoolDataSource` de c3p0 tienen una propiedad llamada `userOverridesAsString` que representa conceptualmente un `Map\u0026gt;`. Antes de la v0.12.0, esa propiedad se manten\u00eda como un objeto serializado codificado en hexadecimal. Cualquier atacante capaz de restablecer esta propiedad, en un `ConnectionPoolDataSource` existente o a trav\u00e9s de objetos serializados creados maliciosamente o instancias de `javax.naming.Reference`, podr\u00eda ser manipulado para ejecutar c\u00f3digo inesperado en el `CLASSPATH` de la aplicaci\u00f3n. El peligro de esta vulnerabilidad fue fuertemente magnificado por vulnerabilidades en la dependencia principal de c3p0, mchange-commons-java. Esta biblioteca incluye c\u00f3digo que refleja implementaciones tempranas de la funcionalidad JNDI, incluyendo soporte sin restricciones para valores remotos de `factoryClassLocation`. Los atacantes podr\u00edan establecer objetos serializados codificados en hexadecimal de `userOverridesAsString` de c3p0 que incluyen objetos \u0027serializados indirectamente\u0027 a trav\u00e9s de referencias JNDI. La deserializaci\u00f3n de esos objetos y la desreferenciaci\u00f3n de los objetos `javax.naming.Reference` incrustados podr\u00edan provocar la descarga y ejecuci\u00f3n de c\u00f3digo malicioso desde un `factoryClassLocation` remoto. Aunque el peligro presentado por las vulnerabilidades de c3p0 se ve exacerbado por las vulnerabilidades en mchange-commons-java, el uso de hexadecimal de objetos serializados en Java como formato para una propiedad Java-Bean escribible, de objetos que pueden ser expuestos a trav\u00e9s de interfaces JNDI, representa una grave fragilidad independiente. La propiedad `userOverridesAsString` de las clases `ConnectionPoolDataSource` de c3p0 ha sido reimplementada para usar un formato seguro basado en CSV, en lugar de depender de la deserializaci\u00f3n de objetos Java potencialmente peligrosa. c3p0-0.12.0+ y versiones superiores dependen de mchange-commons-java 0.4.0+, que restringe el soporte para valores remotos de `factoryClassLocation` mediante par\u00e1metros de configuraci\u00f3n que por defecto son valores restrictivos. c3p0 adicionalmente impone el nuevo `com.mchange.v2.naming.nameGuardClassName` de mchange-commons-java para prevenir la inyecci\u00f3n de nombres JNDI inesperados, potencialmente remotos. No hay soluci\u00f3n alternativa soportada para versiones de c3p0 anteriores a la 0.12.0."
}
],
"id": "CVE-2026-27830",
"lastModified": "2026-04-15T00:35:42.020",
"metrics": {
"cvssMetricV40": [
{
"cvssData": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"attackVector": "ADJACENT",
"availabilityRequirement": "NOT_DEFINED",
"baseScore": 8.9,
"baseSeverity": "HIGH",
"confidentialityRequirement": "NOT_DEFINED",
"exploitMaturity": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"privilegesRequired": "LOW",
"providerUrgency": "NOT_DEFINED",
"subAvailabilityImpact": "HIGH",
"subConfidentialityImpact": "HIGH",
"subIntegrityImpact": "HIGH",
"userInteraction": "NONE",
"valueDensity": "NOT_DEFINED",
"vectorString": "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",
"version": "4.0",
"vulnAvailabilityImpact": "HIGH",
"vulnConfidentialityImpact": "HIGH",
"vulnIntegrityImpact": "HIGH",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"source": "security-advisories@github.com",
"type": "Secondary"
}
]
},
"published": "2026-02-26T01:16:24.583",
"references": [
{
"source": "security-advisories@github.com",
"url": "https://github.com/swaldman/c3p0/commit/e14cbd8166e423e2e9a9d6f08b2add3433492d6e"
},
{
"source": "security-advisories@github.com",
"url": "https://github.com/swaldman/c3p0/security/advisories/GHSA-5476-xc4j-rqcv"
},
{
"source": "security-advisories@github.com",
"url": "https://mogwailabs.de/en/blog/2025/02/c3p0-you-little-rascal"
},
{
"source": "security-advisories@github.com",
"url": "https://www.mchange.com/projects/c3p0/#configuring_security"
},
{
"source": "security-advisories@github.com",
"url": "https://www.mchange.com/projects/c3p0/#security-note"
}
],
"sourceIdentifier": "security-advisories@github.com",
"vulnStatus": "Deferred",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-94"
},
{
"lang": "en",
"value": "CWE-502"
}
],
"source": "security-advisories@github.com",
"type": "Primary"
}
]
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
Loading…