GHSA-rmj7-2vxq-3g9f
jackson-databind has an array subtype allowlist bypass in BasicPolymorphicTypeValidator (allowIfSubTypeIsArray)
Details
## 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.
Are you affected?
Enter the version of the package you're using.
Affected packages
2.10.0 Fixed in: 2.18.8 # pom.xml: bump <version>2.18.8</version> for com.fasterxml.jackson.core:jackson-databind 2.19.0 Fixed in: 2.21.4 # pom.xml: bump <version>2.21.4</version> for com.fasterxml.jackson.core:jackson-databind 3.0.0 Fixed in: 3.1.4 # pom.xml: bump <version>3.1.4</version> for com.fasterxml.jackson.core:jackson-databind 3.0.0 Fixed in: 3.1.4 # pom.xml: bump <version>3.1.4</version> for tools.jackson.core:jackson-databind References
- https://github.com/FasterXML/jackson-databind/security/advisories/GHSA-rmj7-2vxq-3g9f [WEB]
- https://github.com/FasterXML/jackson-databind/issues/5981 [WEB]
- https://github.com/FasterXML/jackson-databind/issues/5983 [WEB]
- https://github.com/FasterXML/jackson-databind/pull/5984 [WEB]
- https://github.com/FasterXML/jackson-databind/commit/01d1692c8d0ed03e51a0e3c4f8a9e6908e4931e5 [WEB]
- https://github.com/FasterXML/jackson-databind/commit/24529da29fdf46ff94ca38de9ebf31cd188f5e8e [WEB]
- https://github.com/FasterXML/jackson-databind [PACKAGE]