CVE-2026-59889 is a medium-severity (CVSS 6.5) CWE-863 vulnerability in com.fasterxml.jackson.core:jackson-databind. A fix is available for com.fasterxml.jackson.core:jackson-databind — see the affected versions and patch details below.
jackson-databind: @JsonView ypassed for @JsonUnwrapped container properties on deserialization
Exploitation Status
No confirmed exploitation observed yet
- CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.
Exploitation and automatability from CISA’s SSVC triage for CVE-2026-59889.
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
CVE-2026-59889 by exploitation likelihood (EPSS) against impact (CVSS). Outside the shaded patch-first corner.
Where this sits among everything scored
Of 394,803 CVEs with a current EPSS score, this one falls in the < 10% band (highlighted). Counts from FIRST.org, log-scaled.
Real-World Exposure
com.fasterxml.jackson.core:jackson-databind☕tools.jackson.core:jackson-databind☕com.fasterxml.jackson.core:jackson-databind☕com.fasterxml.jackson.core:jackson-databind☕tools.jackson.core:jackson-databindReal-time download stats are indexed for npm and PyPI packages. This vulnerability affects Maven packages — download data is not available via public APIs for these ecosystems.
Description
Summary
UnwrappedPropertyHandler.processUnwrapped() replays the buffered JSON for a @JsonUnwrapped property by iterating its properties and calling prop.deserializeAndSet() with no prop.visibleInView(ctxt.getActiveView()) guard — the exact guard processUnwrappedCreatorProperties() received in the #5971 / GHSA-rcqc-6cw3-h962 fix, and the guard BeanDeserializer.deserializeWithUnwrapped applies to directly-matched properties. As a result, a property annotated with both @JsonView(PrivilegedView.class) and @JsonUnwrapped is written from attacker JSON even when deserializing under a more-restrictive active view.
Correction to the original framing (runtime-verified): the gap is NOT a per-field inner @JsonView (the unwrapped sub-object's own BeanDeserializer gates inner fields correctly). The unchecked gate is the view of the unwrapped CONTAINER property.
Intent proof (runtime, 2.x HEAD 21dd70dd and 3.x HEAD 7a5939d6)
An @JsonView(AdminView) property that is NOT @JsonUnwrapped → null under PublicView (correctly gated). The identical property WITH @JsonUnwrapped → fully populated (bypass). The fix the creator path already received, not applied to the regular-property method.
Impact — write-side mass-assignment / privilege escalation
@JsonView is commonly used as a write-side authorization guard: a public endpoint binds the body under readerWithView(PublicView.class) and groups privileged state in a nested object whose container property is @JsonView(AdminView). When that property is @JsonUnwrapped, an untrusted caller mass-assigns it. PoC: a self-service registration where AccountFlags{role,approved,creditBalance} is @JsonView(AdminView) @JsonUnwrapped; attacker JSON {role:ADMIN,approved:true,creditBalance:1000000} under PublicView binds all three → approved admin with arbitrary balance. The failing gate is a WRITE gate, hence integrity-high (C:N/I:H/A:N); no worse than the C:L/I:L parent and arguably higher as @JsonView-as-write-guard is the exact use case #5971/#5969 defended.
Affected
com.fasterxml.jackson.core:jackson-databind2.x: confirmed bypass at 21dd70dd (== released 2.21.4 / 2.22.0 line; includes the #5973 backport).DEFAULT_VIEW_INCLUSIONdefault=true.tools.jackson.core:jackson-databind3.x: confirmed bypass at HEAD 7a5939d6 (latest 3.x).DEFAULT_VIEW_INCLUSIONdefault=false → the stock-config repro is the common shape where privileged inner fields are individually@JsonView(PublicView)and the developer relies on the container@JsonView(AdminView); the 3.x PoC mass-assigns role/approved/creditBalance under PublicView. (The other simultaneous report's PoC was reportedly fixed on 3.x; this distinct container-property path is not.)
Additive variants (runtime-confirmed both branches; all closed by the same one-line guard)
- nested
@JsonUnwrapped(unwrapped-in-unwrapped) — recursive bypass. - merge /
readerWithView(...).withValueToUpdate(...)(PATCH/partial-update) — bypass; non-unwrapped merge control gates correctly. - builder-based deserializer (
@JsonDeserialize(builder=...)) —BuilderBasedDeserializerroutes through the sameprocessUnwrapped. - Honest non-findings: read-side serialization correctly honors views (no leak);
@JsonAnySetter+view and@JsonTypeInfo+@JsonUnwrappedare separate/unsupported behaviors, not this bug.
Fix
Add prop.visibleInView(ctxt.getActiveView()) (when MapperFeature.DEFAULT_VIEW_INCLUSION/active-view applies) to the processUnwrapped() property loop, mirroring processUnwrappedCreatorProperties(). One change closes the impact PoC + all three variants across BeanDeserializer and BuilderBasedDeserializer. Full runnable PoCs (2.x + 3.x) + variant harnesses available on request.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| ☕Maven | com.fasterxml.jackson.core:jackson-databind | ≥ 2.19.0&&< 2.21.5 | 2.21.5com.fasterxml.jackson.core:jackson-databind:2.21.5 |
| ☕Maven | tools.jackson.core:jackson-databind | ≥ 3.0.0&&< 3.1.5 | 3.1.5tools.jackson.core:jackson-databind:3.1.5 |
| ☕Maven | com.fasterxml.jackson.core:jackson-databind | ≥ 2.0.0-RC1&&< 2.18.9 | 2.18.9com.fasterxml.jackson.core:jackson-databind:2.18.9 |
| ☕Maven | com.fasterxml.jackson.core:jackson-databind | ≥ 2.22.0&&< 2.22.1 | 2.22.1com.fasterxml.jackson.core:jackson-databind:2.22.1 |
| ☕Maven | tools.jackson.core:jackson-databind | ≥ 3.2.0&&< 3.2.1 | 3.2.1tools.jackson.core:jackson-databind:3.2.1 |
Detection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for com.fasterxml.jackson.core:jackson-databind, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update com.fasterxml.jackson.core:jackson-databind to 2.21.5 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2026-59889 is resolved across your whole dependency graph.
Workarounds
Do not deserialise data from untrusted sources: where the format allows it, restrict deserialisation to an explicit allowlist of expected types, and prefer a data-only format (JSON, Protobuf) over one that can reconstruct arbitrary objects until you can upgrade.
Fixing This On Your OS
If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.
A moderate severity flaw was found in the FasterXML jackson-databind Java data-binding library, which is shipped in numerous Red Hat products, including Red Hat JBoss Enterprise Application Platform streams. The UnwrappedPropertyHandler.processUnwrapped() method replays buffered JSON for a @JsonUnwrapped property…
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.Source: Red Hat security advisory for CVE-2026-59889 (CC BY 4.0)
| Product | Fixed in | Advisory |
|---|---|---|
| Red Hat JBoss Enterprise Application Platform 7.4.25 | com.fasterxml.jackson.core/jackson-databind:2.18.8.redhat-00003 | RHSA-2026:67603 |
| Red Hat JBoss Enterprise Application Platform 7.4 ELS on RHEL 7 | eap7-activemq-artemis-0:2.16.0-23.redhat_00058.1.el7eap | RHSA-2026:67604 |
| Red Hat JBoss Enterprise Application Platform 8.1.8.GA | com.fasterxml.jackson.core/jackson-databind:2.18.9.redhat-00003 | RHSA-2026:70277 |
| Red Hat JBoss Enterprise Application Platform 8.1 for RHEL 10 | eap8-activemq-artemis-0:2.40.0-8.redhat_00024.1.el10eap | RHSA-2026:70230 |
| Red Hat JBoss Enterprise Application Platform 8.1 for RHEL 8 | eap8-activemq-artemis-0:2.40.0-8.redhat_00024.1.el8eap | RHSA-2026:70228 |
| Red Hat JBoss Enterprise Application Platform 8.1 for RHEL 9 | eap8-activemq-artemis-0:2.40.0-8.redhat_00024.1.el9eap | RHSA-2026:70229 |
Frequently Asked Questions
Is CVE-2026-59889 in your dependencies?
Find it across Maven, including transitive dependencies.