Skip to content

GHSA-rmj7-2vxq-3g9f CVE-2026-54513

jackson-databind has an array subtype allowlist bypass in BasicPolymorphicTypeValidator (allowIfSubTypeIsArray)

High Maven
Severity
8.1 / 10
High · CVSS 3.1
Exploit chance (EPSS)
1.23%
Chance of exploitation in the next 30 days. Higher than 68.84% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-184 Incomplete List of Disallowed Inputs
Fix
Available
2 packages have a fixed version

Description

Summary

BasicPolymorphicTypeValidator.Builder.allowIfSubTypeIsArray() allowlists any array type based only on clazz.isArray(), without validating the array's component (element) type against the configured allowlist. A PTV built with allowIfSubTypeIsArray() plus an explicit concrete-type allowlist therefore still permits EvilType[] even though EvilType is not allowlisted. When Jackson deserializes the elements and no per-element type IDs are present, it instantiates the component type directly with no further PTV check, bypassing the allowlist.

Impact

Applications using BasicPolymorphicTypeValidator with allowIfSubTypeIsArray() as a safeguard get no protection for concrete array component types; an attacker controlling JSON can instantiate non-allowlisted types via an array wrapper, re-opening the gadget-instantiation risk PTV is meant to prevent.

Affected / Patched (verified via git tag --contains)

  • 2.18 line: >= 2.10.0, < 2.18.8 -> fixed in 2.18.8
  • 2.19-2.21 line: >= 2.19.0, < 2.21.4 -> fixed in 2.21.4
  • 3.x line: >= 3.0.0, < 3.1.4 -> fixed in 3.1.4

PolymorphicTypeValidator was added in 2.10.0 so vulnerability N/A for versions prior to that.

Severity / CWE

Maintainer: significant. Reporter: HIGH. CWE-184 (Incomplete List of Disallowed Inputs); related CWE-502.

Upstream fix

FasterXML/jackson-databind#5981; fix PR #5983 (24529da), 2.18 backport PR #5984 (01d1692). Released 2026-06-04 in 2.18.8 / 2.21.4 / 3.1.4.

Credits

Omkhar Arasaratnam (@omkhar) - finder.

Affected versions

Maven

PackageVulnerableFixed in
com.fasterxml.jackson.core:jackson-databind
>= 2.10.0, < 2.18.8
2.18.8
com.fasterxml.jackson.core:jackson-databind
>= 2.19.0, < 2.21.4
2.21.4
com.fasterxml.jackson.core:jackson-databind
>= 3.0.0, < 3.1.4
3.1.4
tools.jackson.core:jackson-databind
>= 3.0.0, < 3.1.4
3.1.4

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

com.fasterxml.jackson.core:jackson-databind Maven → 2.18.8

maven
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.18.8</version></dependency>
gradle
implementation("com.fasterxml.jackson.core:jackson-databind:2.18.8")

tools.jackson.core:jackson-databind Maven → 3.1.4

maven
<dependency><groupId>tools.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>3.1.4</version></dependency>
gradle
implementation("tools.jackson.core:jackson-databind:3.1.4")

Severity breakdown

CVSS 3.1 8.1

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Attack vector
Network
Attack complexity
High
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

Weakness

CWE-184: Incomplete List of Disallowed Inputs

The product implements a protection mechanism that relies on a list of inputs (or properties of inputs) that are not allowed by policy or otherwise require other action to neutralize before additional processing takes place, but the list is incomplete.

How to prevent it
  • Implementation: Do not rely exclusively on detecting disallowed inputs. There are too many variants to encode a character, especially when different environments are used, so there is a high likelihood of missing some variants. Only use detection of disallowed inputs as a mechanism for detecting suspicious activity. Ensure that you are using other protection mechanisms that only identify "good" input - such as lists of allowed inputs - and ensure that you are properly encoding your outputs.

References

Advisories

Packages

Other links

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-cxp5-3px4-pw24
jackson-databind quadratic forward-reference completion
High Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-wv8q-qhhj-9h54
jackson-databind retains every unknown raw type ID
High Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-q4xh-88c3-wmh7
jackson-databind: Duration XMLGregorianCalendar Unbounded Number Parse DoS
High Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-gx83-3vf8-gh7j
jackson-databind: Comparable missing from DefaultBaseTypeLimitingValidator's unsafe base types (incomplete PolymorphicTypeValidator denylist)
Medium Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-wjgm-6hv5-3cvf
jackson-databind: Path Deserialization Missing Scheme Allowlist for FileSystemProvider Resolution
Medium Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-vvgp-rfg2-7rr6
jackson-databind: Incomplete fix for CVE-2026-54514: eager DNS resolution (SSRF) still present in InetAddress deserialization
Medium Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-mhm7-754m-9p8w
jackson-databind: `@JsonView` bypass for creator properties with `@JsonTypeInfo(include=As.EXTERNAL_PROPERTY)`
Medium Also affects com.fasterxml.jackson.core:jackson-databind
GHSA-5gvw-p9qm-jgwh
jackson-databind: @JsonView bypassed for @JsonUnwrapped container properties on deserialization
Medium Also affects com.fasterxml.jackson.core:jackson-databind
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor