🔍 CVE-2026-54512

8.1
CVSS Score
HIGH
2026-06-23
2026-10-25 23:10
✅ 완료

🇰🇷 한글 설명

jackson-databind의 PolymorphicTypeValidator는 다형성 역직렬화를 보호하는 핵심 장치입니다. 타입 ID에 제네릭 파라미터가 포함될 경우 컨테이너 클래스 이름만 검증되고 내부 타입 인자는 검증되지 않아, 허용 목록을 우회하는 역직렬화 취약점이 발생합니다. 2.18.8, 2.21.4, 3.1.4 버전에서 수정되었습니다.

💡 쉬운 설명

Java 데이터 변환 라이브러리가 허용 목록 검사를 불완전하게 수행해, 차단된 클래스를 허용된 컨테이너 안에 넣어 우회할 수 있습니다. 공격자가 이를 이용하면 서버에서 임의의 객체를 생성해 악성 코드를 실행할 수 있습니다.

🇺🇸 원문 (English)

jackson-databind contains the general-purpose data-binding functionality and tree-model for Jackson Data Processor. From 2.10.0 until 2.18.8, 2.21.4, and 3.1.4, jackson-databind's PolymorphicTypeValidator (PTV) is the primary safety mechanism guarding polymorphic deserialization. When polymorphic typing is enabled and a type identifier contains generic parameters (i.e. the type ID string contains <), DatabindContext._resolveAndValidateGeneric() validates only the raw container class name (the substring before <) against the configured PTV. If the container type is approved, the method parses the full canonical type string via TypeFactory.constructFromCanonical() and returns the fully parameterized type without ever validating the nested type arguments against the PTV. The nested type arguments are then resolved, instantiated, and populated as beans during deserialization. An attacker who controls the type ID can therefore place a denied class as a generic type parameter of an allowed container — for example java.util.ArrayList<com.evil.Gadget> when only java.util.ArrayList is allow-listed. The container passes the PTV check; com.evil.Gadget is loaded via Class.forName(name, true, loader), instantiated, and its properties are set from attacker-controlled JSON. This completely bypasses an explicitly configured PTV allow-list. This vulnerability is fixed in 2.18.8, 2.21.4, and 3.1.4.

📍 영향받는 시스템

jackson-databind 2.10.0 이상 2.18.8 미만, 2.21.0 이상 2.21.4 미만, 3.0.0 이상 3.1.4 미만을 사용하며 다형성 타입 검증을 활성화한 Java 애플리케이션

⚔️ 공격 벡터

공격자가 역직렬화 입력의 타입 ID에 허용된 컨테이너 클래스와 차단된 클래스를 제네릭 형태로 조합해 전달하여 허용 목록을 우회하고 임의 객체를 생성

🛡️ 대응 방법

jackson-databind를 2.18.8, 2.21.4, 3.1.4 이상으로 업그레이드하고, 가능하면 다형성 타입 역직렬화 사용을 최소화

🔧 검증 코드

출력된 jar 파일 경로와 Implementation-Version 값을 확인하여 2.18.8 미만(2.x) 또는 2.21.4 미만(2.21.x) 또는 3.1.4 미만(3.x)이면 취약하며, 해당 버전 이상이면 수정된 것입니다.

Shell / Script
find / -name 'jackson-databind*.jar' 2>/dev/null | xargs -I{} sh -c 'unzip -p {} META-INF/MANIFEST.MF 2>/dev/null | grep -i implementation-version | sed "s|^|{}: |"'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Oracle Java SE