CVE-2026-54515:
Java 취약성 분석 및 완화
개요
CVE-2026-54515 is a property-filter bypass vulnerability in FasterXML jackson-databind where case-insensitive deserialization silently restores fields that were explicitly excluded via per-property @JsonIgnoreProperties annotations, enabling mass-assignment-style writes from untrusted JSON. It affects com.fasterxml.jackson.core:jackson-databind versions >= 2.8.0 < 2.18.9, >= 2.19.0 < 2.21.5, and tools.jackson.core:jackson-databind versions >= 3.1.0 < 3.1.4. The issue was reported by Omkhar Arasaratnam, opened internally on May 6, 2026, and the advisory was published on June 16–23, 2026. It carries a CVSS v3.1 base score of 5.3 (Medium) (Github Advisory, FasterXML Advisory).
기술적 세부 사항
The root cause (CWE-915: Improperly Controlled Modification of Dynamically-Determined Object Attributes) lies in BeanDeserializerBase.createContextual(). When _handleByNameInclusion() processes per-property @JsonIgnoreProperties, it produces a contextual deserializer with a filtered BeanPropertyMap that excludes the ignored fields. However, the subsequent code block that handles @JsonFormat(ACCEPT_CASE_INSENSITIVE_PROPERTIES) incorrectly reads from this._beanProperties (the original, unfiltered map) rather than contextual._beanProperties (the filtered map), then overwrites the contextual map with the rebuilt unfiltered version — effectively restoring every property that _handleByNameInclusion() had removed (FasterXML Advisory, Fix Commit). Exploitation requires no authentication and no special privileges — an attacker simply submits a JSON payload containing the ignored property name (in any case variant) to an endpoint that deserializes into a class configured with both annotations. The one-line fix changes BeanPropertyMap propsOrig = _beanProperties to BeanPropertyMap propsOrig = contextual._beanProperties (Fix PR #5964).
영향
Successful exploitation allows an unauthenticated remote attacker to write to object fields that application developers explicitly marked as non-writable via @JsonIgnoreProperties, a mass-assignment-style integrity violation. There is no confidentiality or availability impact; the sole consequence is low-integrity data tampering — for example, setting privileged fields such as adminKey, role, or isAdmin that the application assumed could never be populated from user-supplied JSON (Github Advisory). The practical severity depends heavily on what the ignored properties control: in security-sensitive contexts (e.g., privilege escalation via role fields), the business impact can far exceed the CVSS score suggests (FasterXML Advisory).
착취 단계
- Identify target: Locate a Java application using jackson-databind >= 2.8.0 < 2.18.9, >= 2.19.0 < 2.21.5, or >= 3.1.0 < 3.1.4 that exposes a JSON deserialization endpoint.
- Identify vulnerable class configuration: Determine (via source code review, API documentation, or fuzzing) that the target deserializes into a class or field annotated with both
@JsonIgnoreProperties("<fieldName>")and@JsonFormat(with = JsonFormat.Feature.ACCEPT_CASE_INSENSITIVE_PROPERTIES). - Craft malicious payload: Construct a JSON body that includes the ignored property name, optionally using mixed case to leverage the case-insensitive matching (e.g.,
{"admin":{"adminKey":"ATTACKER_VALUE","username":"alice"}}or{"admin":{"AdminKey":"ATTACKER_VALUE","username":"alice"}}). - Submit payload: Send the crafted JSON to the target endpoint via HTTP POST (or equivalent), with appropriate
Content-Type: application/jsonheader. - Verify bypass: Confirm that the application accepted and applied the value to the supposedly ignored field, indicating the
@JsonIgnorePropertiesexclusion was bypassed (FasterXML Advisory, Fix Commit).
타협의 징후
- Logs: Application logs showing unexpected values in fields that should be read-only or defaulted (e.g., privilege-related fields like
adminKey,role,isAdminpopulated from user input). - Network: HTTP requests containing JSON bodies with property names matching fields annotated with
@JsonIgnoreProperties, particularly in mixed-case variants (e.g.,AdminKey,ADMINKEY,adminkey) targeting deserialization endpoints. - Application Behavior: Unexpected privilege escalation or data integrity anomalies in objects deserialized from user-supplied JSON, where protected fields have been overwritten with attacker-controlled values.
완화 및 해결 방법
Upgrade jackson-databind to a patched version: 2.18.9, 2.21.5, or 3.1.4 (for the tools.jackson.core artifact). The fix ensures the case-insensitive BeanPropertyMap rebuild sources from the already-filtered contextual map rather than the original unfiltered map (FasterXML Advisory, Fix Commit). If immediate patching is not feasible, audit all classes that combine @JsonIgnoreProperties with @JsonFormat(ACCEPT_CASE_INSENSITIVE_PROPERTIES) and consider disabling case-insensitive deserialization on those fields if it is not functionally required.
커뮤니티 반응
The vulnerability was discovered and reported by Omkhar Arasaratnam, who also contributed the fix. During the PR review phase, community member bentmann noted that Jackson 2.21.4 also appeared affected despite the initial advisory scoping, prompting the maintainer (cowtowncoder) to acknowledge the broader impact and backport the fix to the 2.18 branch (PR #6039). Sonatype flagged the issue independently, corroborating the broader version impact (Fix PR #5964).
추가 자료
근원: 이 보고서는 AI를 사용하여 생성되었습니다.
관련 Java 취약점:
무료 취약성 평가
클라우드 보안 태세를 벤치마킹합니다
9개의 보안 도메인에서 클라우드 보안 관행을 평가하여 위험 수준을 벤치마킹하고 방어의 허점을 식별합니다.
추가 Wiz 리소스
맞춤형 데모 받기
맞춤형 데모 신청하기
"내가 본 최고의 사용자 경험은 클라우드 워크로드에 대한 완전한 가시성을 제공합니다."
"Wiz는 클라우드 환경에서 무슨 일이 일어나고 있는지 볼 수 있는 단일 창을 제공합니다."
"우리는 Wiz가 무언가를 중요한 것으로 식별하면 실제로 중요하다는 것을 알고 있습니다."