jackson-databind has case-insensitive deserialization bypasses per-property @JsonIgnoreProperties
Moderate severity
GitHub Reviewed
Published
Jun 16, 2026
in
FasterXML/jackson-databind
•
Updated Jun 23, 2026
Description
Published to the GitHub Advisory Database
Jun 23, 2026
Reviewed
Jun 23, 2026
Last updated
Jun 23, 2026
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
Fixed in 2.18.9, 2.21.5 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.Credits
Omkhar Arasaratnam (@omkhar) - finder.
References