Description
jackson-databind validates the outer class of a class-name type ID but accepts attacker-selected classes inside its generic arguments, even when those classes violate the declared type or would be rejected as direct type IDs. This bypasses the generic-argument validation added for CVE-2026-54512 (GHSA-j3rv-43j4-c7qm), of which this is an incomplete fix.



DatabindContext._resolveAndValidateGeneric() checks the outer class against the declared base type and then passes each argument from the type ID to _validateTypeParameter(), which validates the argument against the outer base type rather than enforcing its corresponding declared generic binding. It also invokes validators with arguments that have not passed the subtype check those validators expect. Under the default DefaultBaseTypeLimitingValidator this accepts an unrelated class inside a generic subtype even when the same class is rejected as a direct type ID. Where an allowIfBaseType(...) rule approves the outer type, Jackson substitutes LaissezFaireSubTypeValidator, so the configured validator no longer restricts the embedded arguments. The element type of a plain array type ID such as [Lpkg.Gadget; is likewise left unvalidated once the array's base type is approved.



Affected paths include annotation-based class-name polymorphism with a default Jackson 3.x JsonMapper, configured default typing in both Jackson 2.x and 3.x, and integrations that expose that default typing. The default-validator case requires no application-authored validator: with @JsonTypeInfo(use = Id.CLASS), a direct gadget type ID is rejected as "Not a subtype", while a type ID naming a generic wrapper around the same gadget is accepted and deserialized, including attacker-supplied bean properties. Where class-name default typing permits Map, a property declared as Map<String,String> accepts HashMap<FileSystemXmlApplicationContext,String>; map-key discovery then passes the attacker-controlled JSON property name to the selected class's one-string constructor. With Spring on the classpath and attacker-controlled XML the application can load, that constructor loads the XML and invokes ProcessBuilder.start() under the application account, giving arbitrary command execution.



This issue affects com.fasterxml.jackson.core:jackson-databind from 2.10.0 and tools.jackson.core:jackson-databind from 3.0.0. Releases before 2.10.0 are not affected, because PolymorphicTypeValidator was introduced in jackson-databind 2.10.0.
Published: 2026-10-28
Score: 9.8 Critical
EPSS: 1.2% Low
KEV: No
Impact: Arbitrary Code Execution
Action: Immediate Patch
AI Analysis

Impact

The flaw arises from the deserialization framework accepting attacker-specified classes within generic arguments of a class-name type ID, while validating only the outer class against the declared base type. The validator checks each argument against the outer type rather than the specific generic binding, enabling an attacker to embed a malicious class inside a wrapper or array. Because the framework treats such inner classes as valid, even though they would be rejected as direct type IDs, the validation added to fix a prior issue (CVE-2026-54512) is circumvented. This allows an attacker to force instantiation of arbitrary Java objects, including those that perform dangerous operations such as loading XML or executing system commands. In environments using default Jackson 3.x JsonMapper or default typing enabled in Jackson 2.x and 3.x, gadget chains can be deployed by sending crafted payloads, granting the attacker full code execution on the host.

Affected Systems

The vulnerability affects the jackson-databind library provided by the FasterXML organization, namely com.fasterxml.jackson.core:jackson-databind and tools.jackson.core:jackson-databind. Versions 2.10.0 and later of the 2.x line, and 3.0.0 and later of the 3.x line, are vulnerable; earlier releases are not affected because the PolymorphicTypeValidator was introduced in 2.10.0. These components are widely used in Java applications that deserialize JSON, including Spring-based services, so any installation of a vulnerable package that employs default or generic type handling is at risk.

Risk and Exploitability

The CVSS score is 9.8, indicating critical severity. The EPSS score is 1% and the vulnerability is not listed in the CISA KEV catalog, so no widespread exploitation has been documented. Based on the description, the likely attack vector is the delivery of crafted JSON or XML payloads that exploit Jackson's default or generic type handling to coerce deserialization of arbitrary classes. Successful exploitation would enable an attacker to execute arbitrary code under the privileges of the running Java application, potentially compromising the entire system.

Generated by OpenCVE AI on October 28, 2026 at 14:26 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade jackson-databind to a version that contains the complete fix for CVE-2026-110879, addressing the logic error identified in CWE-1035.
  • If an upgrade is not immediately possible, replace the default PolymorphicTypeValidator with a custom validator that explicitly limits deserialization to approved classes, mitigating the impact of CWE-1035.
  • Ensure that any external or untrusted data is not deserialized with jackson-databind until a secure validator is in place or the library is updated.

Generated by OpenCVE AI on October 28, 2026 at 14:26 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 10 Nov 2026 00:30:00 +0000

Type Values Removed Values Added
First Time appeared Fasterxml
Fasterxml jackson-databind
Vendors & Products Fasterxml
Fasterxml jackson-databind

Sat, 07 Nov 2026 07:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Wed, 28 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
Description PolymorphicTypeValidator bypass via generic type arguments and array element types in jackson-databind allows arbitrary class instantiation (incomplete fix for CVE-2026-54512) [CVE-2026-110879] jackson-databind validates the outer class of a class-name type ID but accepts attacker-selected classes inside its generic arguments, even when those classes violate the declared type or would be rejected as direct type IDs. This bypasses the generic-argument validation added for CVE-2026-54512 (GHSA-j3rv-43j4-c7qm), of which this is an incomplete fix. DatabindContext._resolveAndValidateGeneric() checks the outer class against the declared base type and then passes each argument from the type ID to _validateTypeParameter(), which validates the argument against the outer base type rather than enforcing its corresponding declared generic binding. It also invokes validators with arguments that have not passed the subtype check those validators expect. Under the default DefaultBaseTypeLimitingValidator this accepts an unrelated class inside a generic subtype even when the same class is rejected as a direct type ID. Where an allowIfBaseType(...) rule approves the outer type, Jackson substitutes LaissezFaireSubTypeValidator, so the configured validator no longer restricts the embedded arguments. The element type of a plain array type ID such as [Lpkg.Gadget; is likewise left unvalidated once the array's base type is approved. Affected paths include annotation-based class-name polymorphism with a default Jackson 3.x JsonMapper, configured default typing in both Jackson 2.x and 3.x, and integrations that expose that default typing. The default-validator case requires no application-authored validator: with @JsonTypeInfo(use = Id.CLASS), a direct gadget type ID is rejected as "Not a subtype", while a type ID naming a generic wrapper around the same gadget is accepted and deserialized, including attacker-supplied bean properties. Where class-name default typing permits Map, a property declared as Map<String,String> accepts HashMap<FileSystemXmlApplicationContext,String>; map-key discovery then passes the attacker-controlled JSON property name to the selected class's one-string constructor. With Spring on the classpath and attacker-controlled XML the application can load, that constructor loads the XML and invokes ProcessBuilder.start() under the application account, giving arbitrary command execution. This issue affects com.fasterxml.jackson.core:jackson-databind from 2.10.0 and tools.jackson.core:jackson-databind from 3.0.0. Releases before 2.10.0 are not affected, because PolymorphicTypeValidator was introduced in jackson-databind 2.10.0.
Title jackson-databind: com.fasterxml.jackson.core/jackson-databind: tools.jackson.core/jackson-databind: Jackson-databind: PolymorphicTypeValidator bypass via generic type arguments and array element types in jackson-databind allows arbitrary class instantiation (incomplete fix for CV jackson-databind: PolymorphicTypeValidator bypass via generic type arguments and array element types allows arbitrary class instantiation (incomplete fix for CVE-2026-54512)
Weaknesses CWE-502
References
Metrics cvssV3_1

{'score': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H'}

cvssV3_1

{'score': 9.8, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H'}


Thu, 22 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Description PolymorphicTypeValidator bypass via generic type arguments and array element types in jackson-databind allows arbitrary class instantiation (incomplete fix for CVE-2026-54512) [CVE-2026-110879]
Title jackson-databind: com.fasterxml.jackson.core/jackson-databind: tools.jackson.core/jackson-databind: Jackson-databind: PolymorphicTypeValidator bypass via generic type arguments and array element types in jackson-databind allows arbitrary class instantiation (incomplete fix for CV
Weaknesses CWE-1035
References
Metrics threat_severity

None

cvssV3_1

{'score': 8.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H'}

threat_severity

Important


Subscriptions

Fasterxml Jackson-databind
cve-icon MITRE

Status: PUBLISHED

Assigner: HeroDevs

Published:

Updated: 2026-11-06T18:39:22.598Z

Reserved: 2026-10-15T00:14:59.431Z

Link: CVE-2026-110879

cve-icon Vulnrichment

Updated: 2026-11-06T18:39:16.992Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-28T01:16:55.180

Modified: 2026-11-06T19:17:08.303

Link: CVE-2026-110879

cve-icon Redhat

Severity : Important

Publid Date: 2026-10-20T22:44:36Z

Links: CVE-2026-110879 - Bugzilla

cve-icon OpenCVE Enrichment

Updated: 2026-11-10T00:15:15Z

Weaknesses