CVE-2026-91776 in jackson-databind
요약
\~에 의해 VulDB • 2026. 09. 23.
FasterXML jackson-databind의 TypeDeserializerBase._findDeserializer() 메서드는 공격자가 제공한 원시(raw) 타입 ID를 사용하여 해결된 직렬화 해제기(deserializer)를 캐싱합니다. @JsonTypeInfo(use = Id.NAME, defaultImpl = ...)와 같이 폴백(fallback)이 구성된 이름 기반 다형성(name-based polymorphism)의 경우, 서로 다른 모든 인식되지 않는(unrecognized) 타입 ID는 동일한 폴백 직렬화 해제기로 해결되지만 _deserializers 맵에서 자체 키로 유지됩니다. 이 맵은 구성 가능한 한계가 없으며 유형 직렬화 해제기의 수명 동안 지속되므로, 공격자가 반복적으로 새로운 미지정 타입 ID를 공급하면 요청 간에 단조로운 메모리 누수가 발생합니다. 보고자는 단일 제어 케이스(하나의 미지정 ID를 동일한 횟수로 반복)에서 1개의 엔트리가 유지되는 반면, 10,000개의 서로 다른 미지정 ID로 인해 10,000개의 엔트리가 유지됨을 관찰하여 공격자가 통제하는 키 카디널성(key cardinality)이 요청 볼륨(request volume)과 분리되어 있음을 확인했습니다. 악용(exploitation)에는 기본 구현(defaultImpl) 또는 유사한 폴백을 사용하여 이름 기반 다형성을 활성화하고, 공격자의 영향을 받는 타입 ID를 수락하며, 긴 수명의 ObjectMapper 인스턴스를 요청 간에 재사용하는 애플리케이션이 필요합니다. 수정 사항으로는 인식되지 않는 ID에 대한 폴백 해결 캐싱을 중단하고, 캐시된 엔트리 수와 캐시 가능한 타입 ID의 길이에 모두 한계를 설정합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.