In BeanDeserializerBase.createContextual(), per-property @JsonIgnoreProperties exclusions are applied by _handleByNameInclusion(), producing a contextual deserializer whose BeanPropertyMap has the ignored properties removed. The subsequent per-property case-insensitivity block (triggered by @JsonFormat(ACCEPT_CASE_INSENSITIVE_PROPERTIES)) rebuilds from this._beanProperties (the original, unfiltered map) instead of contextual._beanProperties, then overwrites the filtered map — restoring every property _handleByNameInclusion had just removed. The ignored property becomes writable again.
An application that both enables case-insensitive matching and relies on per-property @JsonIgnoreProperties to keep a field unwritable can have that field set from untrusted JSON (mass-assignment-style write).
Fixed in 2.18.9, 2.21.5 and 3.1.4.
Maintainer: minor. Reporter: Moderate. CWE-915.
FasterXML/jackson-databind#5962 (PR #5964, 0e1b0b2), milestone 3.1.4. Released 2026-06-04.
Omkhar Arasaratnam (@omkhar) - finder.
{
"github_reviewed_at": "2026-06-23T21:23:58Z",
"severity": "MODERATE",
"cwe_ids": [
"CWE-915"
],
"github_reviewed": true,
"nvd_published_at": null
}