CVE-2026-68497 in jackson-databind
요약
\~에 의해 VulDB • 2026. 09. 11.
jackson-databind은 CoreXMLDeserializers.Std._deserialize에서 raw 문자열을 DatatypeFactory.newDuration(value) 또는 newXMLGregorianCalendar(value)로 그대로 전달하여 JSON 문자열을 javax.xml.datatype.Duration 또는 javax.xml.datatype.XMLGregorianCalendar 필드에 바인딩합니다. 이러한 직렬화 해제(deserializer)는 기본 설정으로 등록되며, 별도의 opt-in이 필요하지 않으므로 다형성 타이핑(polymorphic typing)이나 특수 구성 없이 plain ObjectMapper 또는 JsonMapper를 사용해도 이 경로에 도달할 수 있습니다. XML Schema의 lexical grammar는 임의의 길이를 가진 숫자 컴포넌트를 허용하며, JDK는 이를 BigInteger(String) 및 BigDecimal(String) 생성자를 통해 구현하는데, 이는 자릿수 기준 시간 복잡도가 2차(quadratic)입니다. digits가 JSON number 토큰이 아닌 JSON string 토큰 내부에 위치하므로 jackson-core의 StreamReadConstraints.maxNumberLength 제한은 적용되지 않습니다. Jackson 자체의 NumberDeserializers는 문자열화된 숫자를 파싱하기 전에 validateIntegerLength 또는 validateFPLength를 호출하여 검증하지만, XML datatype deserializer는 이러한 사전 검사를 생략합니다. 따라서 인증되지 않은 공격자는 수 MB 크기의 단일 요청(예: P로 시작하고 수백만 개의 digit와 Y로 끝나는 Duration 값)을 제출하여 수십 초에서 몇 분에 걸친 single-threaded CPU 작업을 유발할 수 있으며, 여러 concurrent request가 서버의 worker threads를 포화시킬 수 있습니다. 이 취약점은 com.fasterxml.jackson.core:jackson-databind 2.0.0 이상 2.18.10 미만, 2.19.0 이상 2.21.6 미만, 그리고 2.22.0 이상 2.22.2 미만 버전과 tools.jackson.core:jackson-databind 3.0.0 이상 3.1.6 미만 및 3.2.0 이상 3.2.2 미만 버전에 영향을 미칩니다. 사용자는 2.18.10, 2.21.6, 2.22.2, 3.1.6 또는 3.2.2로 업그레이드해야 합니다.
If you want to get best quality of vulnerability data, you may have to visit VulDB.