🇰🇷 한글 설명
jackson-databind의 BeanDeserializer._deserializeUsingPropertyBased 메서드에서 @JsonView 필터가 생성자 속성에만 적용되고 일반 속성 버퍼링 분기에서는 적용되지 않는 결함이 있습니다. 이로 인해 특정 조건에서 @JsonView로 제한된 setterless 컬렉션/맵 속성이 공격자의 JSON 데이터에 의해 무단으로 채워질 수 있습니다.
💡 쉬운 설명
데이터를 변환하는 과정에서 특정 필드를 숨기도록 설정해도, 공격자가 특수한 방식으로 데이터를 보내면 숨겨진 정보가 강제로 입력될 수 있는 보안 약점입니다. 이로 인해 권한이 없는 데이터가 시스템 내부로 유입될 위험이 있습니다.
🇺🇸 원문 (English)
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, in BeanDeserializer._deserializeUsingPropertyBased, the active-view (@JsonView) filter was applied only to creator properties; the regular property-buffering branch performed no prop.visibleInView(activeView) check. A change making SetterlessProperty.isMerging() return true routed setterless Collection/Map properties through this unguarded path, so a setterless collection annotated with a restricted @JsonView is populated from attacker JSON even when the active view excludes it. This vulnerability is fixed in 2.21.4 and 3.1.4.
📍 영향받는 시스템
jackson-databind 2.21.0 ~ 2.21.4 및 3.1.4 미만 버전
⚔️ 공격 벡터
공격자가 @JsonView 필터링을 우회할 수 있는 특수하게 구성된 JSON 데이터를 전송하여 제한된 속성을 조작함
🛡️ 대응 방법
jackson-databind를 2.21.4 또는 3.1.4 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 jackson-databind의 버전이 2.21.4 또는 3.1.4보다 낮은지 확인하십시오.
mvn dependency:tree | grep jackson-databind