CVE-2026-54518: Jackson-databind Authorization Bypass in Unwrapped Creator Properties
Jackson-databind, a widely-used Java library for converting JSON to objects, has a flaw where constructor parameters can be populated with JSON data even when access controls (views) should prevent it. Specifically, when a constructor parameter is marked both @JsonUnwrapped and @JsonView(AdminView.class), the library bypasses the view restriction during JSON deserialization, allowing an attacker to inject data into admin-only fields. This affects versions 2.21.0 through 2.21.3 and 3.1.3, and is patched in 2.21.4 and 3.1.4.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 6.5 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
- Weaknesses (CWE)
- CWE-863
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-23 / 2026-06-27
NVD description (verbatim)
jackson-databind contains the general-purpose data-binding functionality and tree-model for Jackson Data Processor. From 2.21.0 until 2.21.4 and 3.1.4, UnwrappedPropertyHandler.processUnwrappedCreatorProperties() replays buffered JSON into creator parameters but never consults prop.visibleInView(activeView). The normal property-based creator path gates creator properties on the active view, but this unwrapped-creator replay path bypasses that check, so a constructor parameter annotated with both @JsonView(AdminView.class) and @JsonUnwrapped is populated from attacker JSON even when a more restrictive view is active. This vulnerability is fixed in 2.21.4 and 3.1.4.
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability resides in UnwrappedPropertyHandler.processUnwrappedCreatorProperties(), which deserializes unwrapped JSON properties into constructor parameters without validating the active view context. While the standard property-based creator path invokes prop.visibleInView(activeView) to enforce JSON view filtering, the unwrapped-creator replay path omits this check. A constructor parameter decorated with both @JsonUnwrapped and @JsonView(AdminView.class) will be deserialized even when a less-privileged view (e.g., UserView) is active. The vulnerability is classified as CWE-863 (Incorrect Authorization) and carries a CVSS 3.1 score of 6.5 (MEDIUM), indicating medium network-based impact with no user interaction required.
Business impact
Organizations using Jackson-databind for REST APIs or microservices with role-based or view-based access controls may face unauthorized data modification. An attacker can bypass application-level authorization logic by injecting JSON into admin-only constructor fields, potentially escalating privileges, modifying sensitive configuration, or corrupting data that should be write-restricted. The risk is highest in multi-tenant systems or applications that rely on @JsonView annotations to enforce API response or request boundaries between user roles.
Affected systems
Jackson-databind versions 2.21.0 through 2.21.3 and version 3.1.3 are vulnerable. The 2.21.x line is in active use across many enterprise Java applications; 3.1.3 is the newest affected version. Applications that depend on jackson-databind indirectly through frameworks like Spring Boot, Quarkus, or Micronaut may also be affected. Check your build artifacts and dependency trees for these versions.
Exploitability
Exploitability is straightforward for attackers with network access. No special privileges, authentication, or user interaction are required; the attack is triggered by crafting and sending a JSON request to a vulnerable endpoint. The vulnerability is reliable and does not depend on race conditions or timing. An attacker needs only to identify endpoints that deserialize JSON into objects with the vulnerable pattern (constructor parameters using both @JsonUnwrapped and @JsonView annotations), then include the admin-only field in the JSON payload.
Remediation
Upgrade Jackson-databind to version 2.21.4 or later (for the 2.21.x branch) or to version 3.1.4 or later (for the 3.1.x branch). Verify the upgrade by checking your dependency lock file or by running a build and confirming the patched version is in use. If immediate upgrade is not possible, review all @JsonUnwrapped constructor parameters to confirm they do not also carry @JsonView annotations; if they do, refactor to avoid that combination until patching is complete.
Patch guidance
Apply the upgrade from your package manager (Maven Central, Gradle repository, etc.) to 2.21.4 or 3.1.4. No configuration changes are required post-upgrade. Test deserialization of JSON payloads that target constructor parameters with @JsonUnwrapped and @JsonView to ensure the view restrictions are now enforced. Consult the Jackson project release notes (verify against the vendor advisory) for any additional changes or deprecations in the patch.
Detection guidance
Monitor build and dependency files for jackson-databind versions 2.21.0–2.21.3 or 3.1.3. Use Software Composition Analysis (SCA) tools to flag these versions in your repositories and CI/CD pipelines. In application code, search for constructors that combine @JsonUnwrapped with @JsonView annotations; these are the highest-risk patterns and should be prioritized for testing post-upgrade. Monitor API traffic for suspicious JSON payloads that attempt to set admin-only fields in requests that should be subject to view restrictions.
Why prioritize this
This vulnerability requires timely attention because it directly undermines authorization controls in Jackson-deserializing applications. While the CVSS score is medium (6.5), the real-world impact is high when applications depend on @JsonView for security boundaries. No active exploitation is recorded in the public domain yet (not in KEV), but the vulnerability is trivial to exploit and affects widely-deployed code. Prioritize applications that accept untrusted JSON and enforce role-based access control.
Risk score, explained
The CVSS 3.1 score of 6.5 (MEDIUM) reflects a network-accessible, unauthenticated attack with low attack complexity. The integrity impact is rated as LOW because the attacker can modify data fields, but not all fields (only those in the unwrapped creator path). Confidentiality is also rated LOW, as some data exposure may occur. No availability impact is recorded. The score appropriately captures the authorization bypass but may understate real-world risk in security-sensitive applications where @JsonView protections are critical to the threat model.
Frequently asked questions
Do all Jackson-databind applications need to upgrade immediately?
Applications using Jackson-databind versions 2.21.0–2.21.3 or 3.1.3 should prioritize an upgrade. The highest risk applies to applications that accept JSON from untrusted sources and use @JsonView annotations on constructor parameters (especially with @JsonUnwrapped). If your application does not use this combination of annotations, your immediate risk is lower, but upgrading is still recommended for defense-in-depth.
What is the difference between 2.21.x and 3.1.x, and which branch should I upgrade to?
Version 2.21.x is the stable branch receiving updates; 3.1.x is a newer line. If you are on 2.21.0–2.21.3, upgrade to 2.21.4 or later. If you are on 3.1.3, upgrade to 3.1.4 or later. Do not skip major versions without reviewing the vendor advisory and testing your application, as breaking changes may be present.
If we don't use @JsonUnwrapped with @JsonView, are we safe?
The specific vulnerability requires both annotations on the same constructor parameter. If your codebase does not combine these decorators, you are not exposed to this particular bypass. However, other Jackson deserialization vulnerabilities may exist; conduct a broader security review of your Jackson usage and dependency versions.
How can we test for this vulnerability in our application?
Identify constructors annotated with both @JsonUnwrapped and @JsonView. Craft a JSON test payload that includes the normally view-restricted field and submit it to an endpoint using a less-privileged view context. If the field is populated despite the view restriction, the vulnerability is present. After patching, verify that the field is no longer populated.
This analysis is provided for informational purposes to support vulnerability management and risk assessment. It is not a substitute for vendor security advisories, release notes, or legal guidance. Organizations must verify patch versions, test thoroughly in their environments, and assess applicability based on their specific dependency trees and use of Jackson-databind features. SEC.co makes no warranty regarding the accuracy of inferred timelines or patch availability; always consult official Jackson project repositories and your organization's software supply chain tools for authoritative information. Source: NVD (public-domain), retrieved 2026-07-29. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-54517MEDIUMJackson-Databind @JsonView Bypass Vulnerability Analysis
- CVE-2026-10211MEDIUMAstrBot 4.23.6 Path Normalization Authorization Bypass
- CVE-2026-10616MEDIUMAuthorization Bypass in nextlevelbuilder GoClaw Task Completion
- CVE-2026-10741MEDIUMNexus Repository Manager Credential Disclosure Vulnerability
- CVE-2026-10815MEDIUMAuthorization Bypass in Hostel Management System PHP
- CVE-2026-10860MEDIUMMISP Delete Validation Bypass – Logic Error in HTTP DELETE Handler
- CVE-2026-12446MEDIUMChrome Password Manager Cross-Origin Data Leak – Exploit, Patch & Detection
- CVE-2026-12797MEDIUMBerriAI litellm Banned Keywords Bypass Vulnerability