CVE-2026-54516: Jackson-databind @JsonIgnore Bypass via Property Renaming
Jackson-databind, a widely-used Java library for converting JSON to and from objects, has a flaw in how it handles property annotations. The bug allows attackers to write data to fields that should be protected by @JsonIgnore annotations when certain conditions are met. Specifically, if a class uses @JsonProperty to rename a getter but @JsonIgnore on the setter, an attacker can bypass the ignore directive by sending JSON with the renamed key, directly modifying the underlying field. This works because Jackson's property inference logic treats the backing field as writable even though the intended API forbids it. The vulnerability affects versions 2.21.0 through 2.21.4 and 3.1.4 (or earlier in the 3.x line prior to 3.1.4).
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 5.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Weaknesses (CWE)
- CWE-915
- 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, POJOPropertiesCollector._renameProperties() allows a property with @JsonProperty("renamed") on the getter and @JsonIgnore on the setter to be renamed rather than dropped. With MapperFeature.INFER_PROPERTY_MUTATORS enabled (default), the private backing field is retained; during deserialization BeanDeserializerFactory.addBeanProps() sees hasField()==true, builds a FieldProperty, and makes the backing field writable. An attacker supplying the renamed JSON key writes the backing field directly, bypassing the @JsonIgnore on the setter. This vulnerability is fixed in 3.1.4.
5 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability resides in POJOPropertiesCollector._renameProperties() during Jackson's property introspection phase. When a POJO declares a getter with @JsonProperty("renamed") and a setter with @JsonIgnore, the collector renames the property but fails to mark it as ignored. With MapperFeature.INFER_PROPERTY_MUTATORS enabled—the default behavior—BeanDeserializerFactory.addBeanProps() detects the private backing field via hasField()==true and constructs a FieldProperty instance. This FieldProperty is marked writable during deserialization, allowing direct field access that circumvents setter-level access controls. An attacker who controls the JSON input can supply the renamed key to write arbitrary values to the backing field. The root cause is improper sequencing: the renaming logic executes before ignore semantics are fully applied, creating a window where a field can be simultaneously renamed and writable.
Business impact
For applications using Jackson-databind to deserialize untrusted JSON, this vulnerability enables data tampering through fields intended to be read-only or inaccessible. An attacker could modify sensitive application state—such as user roles, permissions, balances, or configuration values—if those fields are backed by properties with conflicting annotations. The impact is limited to integrity (writing) and does not enable information disclosure or denial of service. Organizations heavily dependent on Jackson for REST API backends, microservices, or data pipeline processing should assess exposure. The threat is elevated in cases where deserialized objects directly influence access control or financial transactions.
Affected systems
Jackson-databind versions 2.21.0 through 2.21.4 and 3.1.4 (or prior 3.x versions before the fix) are affected. Any application that includes jackson-databind as a transitive or direct dependency and deserializes untrusted JSON is potentially vulnerable if it uses the annotation pattern described (renamed getter + ignored setter). Spring Boot applications, Quarkus, Micronaut, and other frameworks that bundle Jackson are in scope. Legacy systems still on 2.x releases and newer 3.x deployments are equally affected; the vulnerability is not version-specific to modern releases alone.
Exploitability
Exploitability is straightforward for an attacker with the ability to craft and send JSON payloads to an application. No user interaction, special privileges, or network positioning is required; the attack works over plain HTTP/REST. The attacker must know or guess the renamed property name and the backing field type, but both are typically discoverable through application documentation, decompilation, or error messages. The default configuration (INFER_PROPERTY_MUTATORS enabled) means no special setup by developers is needed to trigger the flaw. However, the attack surface is limited to objects that use the specific annotation combination; applications without @JsonIgnore on setters or without property renaming are unaffected.
Remediation
Upgrade jackson-databind to version 3.1.4 or later. For 2.x users, verify with FasterXML's advisory whether a patch is available for the 2.21.x line; if not, consider migrating to 3.1.4+ or implementing a workaround. As an interim measure, disable MapperFeature.INFER_PROPERTY_MUTATORS on ObjectMapper instances if your application does not rely on automatic field inference, though this may break existing deserialization logic. Audit POJOs that combine @JsonProperty on getters with @JsonIgnore on setters to ensure they are not handling sensitive data; refactoring to use explicit @JsonIgnore at the property level or decoupling read/write models may be prudent.
Patch guidance
FasterXML has released jackson-databind 3.1.4 as the corrected version. Users on 2.21.x should check the FasterXML GitHub repository and advisory pages for backport status; security patches for older minor versions are not always guaranteed. The fix modifies POJOPropertiesCollector and BeanDeserializerFactory to correctly apply ignore semantics before or during field property construction, preventing writable FieldProperty instances from being created for ignored fields. When upgrading, test deserialization of your application's key POJOs to ensure backward compatibility, as changes to property introspection logic can occasionally affect behavior.
Detection guidance
In your environment, identify jackson-databind usage via dependency scanning (Maven, Gradle, pip, etc.). Use Software Composition Analysis (SCA) tools to flag versions 2.21.0–2.21.4 and vulnerable 3.x versions. During code review, search for patterns combining @JsonProperty (with value argument) on getters and @JsonIgnore on setters in POJO classes. Monitor deserialization logs for unexpected field modifications or errors related to property binding. Consider adding defensive validation in business logic: if a field is meant to be immutable after construction, assert its state or use final keywords where feasible. WAF rules can be applied if the application exposes a known renamed JSON key; block or alert on requests that include that key if it is never legitimate.
Why prioritize this
This vulnerability merits timely but not emergency patching. The CVSS score of 5.3 (Medium) reflects that integrity is compromised but confidentiality and availability are not. Prioritize remediation for internet-facing APIs and services that accept JSON from untrusted sources, particularly those handling user account data, financial transactions, or administrative state. Organizations using Jackson for internal tool or batch processing with controlled inputs can defer patching. The annotation pattern (renamed getter + ignored setter) is not ubiquitous, so affected applications are likely a subset. Nonetheless, the ease of exploitation and the default-on nature of INFER_PROPERTY_MUTATORS warrant inclusion in monthly security updates rather than emergency out-of-band patching.
Risk score, explained
CVSS 5.3 (Medium) reflects an unauthenticated network-based attack vector (AV:N, AC:L, PR:N, UI:N), but impact is limited to integrity (I:L) with no confidentiality or availability loss. The score appropriately penalizes the flaw's practical exploitability while acknowledging that payload crafting requires knowledge of the specific annotation pattern and renamed field names. In a threat model where an organization processes hostile JSON regularly (e.g., third-party integrations, public APIs), internal risk rating may be elevated to High; conversely, applications with strict input validation or that do not use the vulnerable annotation combination may lower it. The lack of KEV designation indicates no known active exploitation in the wild as of the published date.
Frequently asked questions
Does this vulnerability allow remote code execution?
No. The vulnerability is limited to field-level data tampering through deserialization. An attacker can overwrite the values of backing fields that are protected by @JsonIgnore, but cannot execute arbitrary code or commands. The impact is data integrity compromise, not system compromise.
Do I need to upgrade if my application does not deserialize untrusted JSON?
If your application only deserializes JSON from sources you fully control (e.g., internal configuration files, trusted data stores), your exposure is low. However, it is still prudent to upgrade as a general security hygiene measure and to reduce maintenance burden; untrusted JSON may arrive in the future if the application's role changes.
Can I work around this vulnerability without upgrading?
Disabling MapperFeature.INFER_PROPERTY_MUTATORS on your ObjectMapper instances may mitigate the flaw, but this can break existing deserialization logic and is not a reliable long-term solution. Refactoring affected POJOs to avoid the vulnerable annotation pattern (e.g., removing @JsonIgnore from setters or using separate DTOs for serialization/deserialization) is more robust, but upgrade to 3.1.4 or later is the recommended path.
How do I know if my code is affected?
Search your codebase for POJO classes that have @JsonProperty on a getter and @JsonIgnore on a setter for the same logical property. If you find instances, confirm that jackson-databind version is 2.21.0–2.21.4 or the affected 3.x release. Use SCA tools to automate version detection across your supply chain.
This analysis is based on the published CVE description and CVSS vector as of the stated publication date. Specific patch version numbers, affected product versions, and remediation timelines should be verified against the official FasterXML GitHub repository and security advisories. No exploit code or proof-of-concept is provided herein. Organizations should conduct their own risk assessment based on their use of Jackson-databind, the sensitivity of data handled, and the authentication and network controls protecting their systems. This information is provided for informational and remediation planning purposes only and does not constitute legal, compliance, or security policy advice. Source: NVD (public-domain), retrieved 2026-07-29. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-54515MEDIUMjackson-databind @JsonIgnoreProperties Bypass – Integrity Vulnerability
- CVE-2026-42540MEDIUMIRIS Insecure Direct Object Reference API Vulnerability (CWE-915)
- CVE-2026-42862MEDIUMFlowise Mass Assignment Vulnerability Breaks Workspace Isolation
- CVE-2026-42863HIGHFlowiseAI Mass Assignment Vulnerability in Chatflow Update Endpoint
- CVE-2026-44494HIGHAxios Prototype Pollution to MITM Gadget Chain (v1.0.0–1.15.x)
- CVE-2026-44495HIGHAxios Prototype Pollution Gadget Vulnerability (0.31.0 & 1.15.1)
- CVE-2026-46475HIGHFlowise Mass-Assignment Privilege Escalation (v3.1.2 Patch)
- CVE-2026-46476HIGHFlowise Cross-Workspace Template Takeover Vulnerability