Update dependency com.fasterxml.jackson.core:jackson-databind to v2.21.5 [SECURITY]#442
Open
renovate[bot] wants to merge 1 commit into
Open
Update dependency com.fasterxml.jackson.core:jackson-databind to v2.21.5 [SECURITY]#442renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.21.4→2.21.5jackson-databind has case-insensitive deserialization bypasses per-property @JsonIgnoreProperties
CVE-2026-54515 / GHSA-5jmj-h7xm-6q6v
More information
Details
Summary
In
BeanDeserializerBase.createContextual(), per-property@JsonIgnorePropertiesexclusions are applied by_handleByNameInclusion(), producing acontextualdeserializer whoseBeanPropertyMaphas the ignored properties removed. The subsequent per-property case-insensitivity block (triggered by@JsonFormat(ACCEPT_CASE_INSENSITIVE_PROPERTIES)) rebuilds fromthis._beanProperties(the original, unfiltered map) instead ofcontextual._beanProperties, then overwrites the filtered map — restoring every property_handleByNameInclusionhad just removed. The ignored property becomes writable again.Impact
An application that both enables case-insensitive matching and relies on per-property
@JsonIgnorePropertiesto keep a field unwritable can have that field set from untrusted JSON (mass-assignment-style write).Affected / Patched
Will be fixed in 2.18.9, 2.21.5, 2.22.1 and 3.1.4.
Severity / CWE
Maintainer: minor. Reporter: Moderate. CWE-915.
Upstream fix
FasterXML/jackson-databind#5962 (PR #5964,
0e1b0b2), milestone 3.1.4. Released 2026-06-04.Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
jackson-databind:
@JsonViewbypass for creator properties with@JsonTypeInfo(include=As.EXTERNAL_PROPERTY)GHSA-mhm7-754m-9p8w
More information
Details
Summary
In
BeanDeserializer.deserializeUsingPropertyBasedWithExternalTypeId, the active-view (@JsonView) filter was applied only to the regular bean-property branch; the creator-property branch performed nocreatorProp.visibleInView(activeView)check. A constructor parameter annotated with both@JsonView(RestrictedView.class)and@JsonTypeInfo(use=Id.NAME, include=As.EXTERNAL_PROPERTY)is populated from attacker JSON even when a more restrictive view is active.This is a patch gap. GHSA-5hh8 (CVE-2026-54517) and GHSA-rcqc (CVE-2026-54518) descriptions cover only the main property-based path and the unwrapped-creator path respectively; the external-type-id creator path was fixed on the 3.x line via #6004 ("Extend #5969/#5971 fixes to ... external-type-id case in regular BeanDeserializer", commit 7dc7a17, 2026-05-22) but
the fix was never backported to 2.21 or 2.18. Users on 2.21.4 and 2.18.8 who upgraded per the published advisories remain vulnerable to the same
@JsonViewbypass technique via a different code path.Vulnerable Code Path
File:
com/fasterxml/jackson/databind/deser/BeanDeserializer.javaMethod:
deserializeUsingPropertyBasedWithExternalTypeIdOn 2.21.4 (and 2.18.8), the creator-property branch (around line 1125-1158) checks
creatorProp.isInjectionOnly()and hands off toext.handlePropertyValue(...)/buffer.assignParameter(...)without ever consultingvisibleInView(activeView):On 3.1.4, the same branch contains the additional guard (commit 7dc7a17):
The 2.21 and 2.18 backport PRs (#6005 and #6003) only backported the main-path fixes from #5969/#5971; the external-type-id fix from #6004 was not backported. The maintainer closed #6005
with "got changes merged forward, looks like it's all covered now", but the forward-merge did not include the ExtTypeId creator branch.
Proof of Concept
Compiles and runs against jackson-databind 2.21.4:
A control case that removes include = As.EXTERNAL_PROPERTY (forcing the normal property-based path) correctly returns asset = null, confirming the bypass is specific to the ExternalTypeId
code path and not a misconfiguration.
Impact
View-restricted (e.g. admin-only) creator properties can be populated from untrusted input where @JsonView is used as a write-side authorization boundary. Typical victims are Spring Boot
REST controllers that use @JsonView(PublicView.class) on the request body to whitelist user-settable fields — an attacker can inject the restricted creator parameter (including choosing
the polymorphic subtype via the sibling kind/type-id property) by combining it with a polymorphic @JsonTypeInfo(EXTERNAL_PROPERTY) annotation on the same field.
Trigger Conditions
Developer code must combine (no opt-in user configuration required):
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.