jackson-databind에는 Jackson 데이터 프로세서용 범용 데이터 바인딩 기능과 트리 모델이 포함되어 있습니다. 2.10.0부터 2.18.8, 2.21.4 및 3.1.4까지 jackson-databind의 PTV(PolymorphicTypeValidator)는 다형성 역직렬화를 보호하는 기본 안전 메커니즘입니다. 다형성 유형 지정이 활성화되고 유형 식별자에 일반 매개변수가 포함된 경우(예: 유형 ID 문자열에 <가 포함됨) DatabindContext._resolveAndValidateGeneric()은 원시 컨테이너 클래스 이름(su
jackson-databind에는 Jackson 데이터 프로세서용 범용 데이터 바인딩 기능과 트리 모델이 포함되어 있습니다. 2.10.0부터 2.18.8, 2.21.4 및 3.1.4까지 jackson-databind의 PTV(PolymorphicTypeValidator)는 다형성 역직렬화를 보호하는 기본 안전 메커니즘입니다. 다형성 유형 지정이 활성화되고 유형 식별자에 일반 매개 변수가 포함된 경우(예: 유형 ID 문자열에 <가 포함됨) DatabindContext._resolveAndValidateGeneric()는 구성된 PTV에 대해 원시 컨테이너 클래스 이름(< 앞의 하위 문자열)만 유효성을 검사합니다. 컨테이너 유형이 승인되면 메서드는 TypeFactory.constructFromCanonical()을 통해 전체 표준 유형 문자열을 구문 분석하고 PTV에 대해 중첩 유형 인수의 유효성을 검사하지 않고 완전히 매개 변수화된 유형을 반환합니다. 그런 다음 중첩된 유형 인수는 역직렬화 중에 Bean으로 확인되고 인스턴스화되고 채워집니다. 따라서 유형 ID를 제어하는 공격자는 거부된 클래스를 허용된 컨테이너의 일반 유형 매개변수로 배치할 수 있습니다. 예를 들어 java.util.ArrayList만 허용 목록에 있는 경우 java.util.ArrayList<com.evil.Gadget>입니다. 컨테이너가 PTV 검사를 통과했습니다. com.evil.Gadget은 Class.forName(name, true, loader)을 통해 로드되고 인스턴스화되며 해당 속성은 공격자가 제어하는 JSON에서 설정됩니다. 이는 명시적으로 구성된 PTV 허용 목록을 완전히 우회합니다. 이 취약점은 2.18.8, 2.21.4 및 3.1.4에서 수정되었습니다.
왜 이 VPI인가 (설명가능 · 실험적)
VPI 산정 기준
| 영향도 | 81.00 |
| 악용 신호(PoC 존재) | ×1.20 |
| VPI | 97.20 |
VPI 공식 vpi-v1 기준
| 소스 | CVSS 버전 | 기본 점수 | 심각도 | 벡터 문자열 | 평가일 |
|---|---|---|---|---|---|
| NVDNIST | 3.1 | 8.1 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H | 2026. 06. 24. |
| OSV3rd | 3.1 | 8.1 |
| CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 2026. 06. 24. |