🇰🇷 한글 설명
jackson-databind의 UnwrappedPropertyHandler.processUnwrappedCreatorProperties() 메서드에서 JSON 데이터를 재처리할 때 활성 뷰(active view)를 확인하지 않는 결함이 발견되었습니다. 이로 인해 @JsonView(AdminView.class)와 @JsonUnwrapped가 함께 적용된 생성자 매개변수가 제한적인 뷰 환경에서도 공격자의 JSON 데이터에 의해 값이 채워질 수 있습니다. 이 취약점은 2.21.4 및 3.1.4 버전에서 수정되었습니다.
💡 쉬운 설명
데이터를 처리할 때 특정 권한이 있는 사람만 볼 수 있도록 설정된 정보가, 보안 설정이 무시된 채 일반 사용자에게 노출될 수 있는 문제입니다. 공격자가 특수하게 조작된 데이터를 보내면 관리자 전용 데이터가 시스템에 잘못 입력될 수 있습니다.
🇺🇸 원문 (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, UnwrappedPropertyHandler.processUnwrappedCreatorProperties() replays buffered JSON into creator parameters but never consults prop.visibleInView(activeView). The normal property-based creator path gates creator properties on the active view, but this unwrapped-creator replay path bypasses that check, so a constructor parameter annotated with both @JsonView(AdminView.class) and @JsonUnwrapped is populated from attacker JSON even when a more restrictive view is active. This vulnerability is fixed in 2.21.4 and 3.1.4.
📍 영향받는 시스템
jackson-databind 2.21.0 ~ 2.21.4 및 3.1.4 미만 버전
⚔️ 공격 벡터
공격자가 @JsonUnwrapped와 @JsonView가 결합된 필드를 대상으로 조작된 JSON 데이터를 전송하여 권한을 우회함
🛡️ 대응 방법
jackson-databind를 2.21.4 또는 3.1.4 이상의 최신 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 결과에서 jackson-databind의 버전을 확인하여 2.21.4 또는 3.1.4 이상인지 체크합니다.
mvn dependency:tree | grep jackson-databind