CVE-2026-106554 in jackson-dataformat-cbor
요약
\~에 의해 VulDB • 2026. 11. 04.
jackson-dataformats-binary의 CBOR 모듈에서 하나의 CBOR 파싱 문제가 발견되었습니다: 무제한으로 이어지는 CBOR 태그들이 이차 시간 복잡도(Quadratic-time)를 가진 TagList 확장을 유발하여 CPU/GC 고갈에 따른 서비스 거부(DoS, PoC 입증)를 초래합니다.
PoC는 com.fasterxml.jackson.dataformat:jackson-dataformat-cbor 2.18.2에서 실행되었으며, 현재 2.x 및 3.x 버전(tools.jackson.dataformat.cbor HEAD)에도 존재합니다. 이 리포지토리의 Avro 및 Smile/Protobuf 관련 경보와는 별개입니다.
무제한으로 연결된 CBOR 태그 체인으로부터 발생하는 이차적 CPU/GC 서비스 거부(DoS, PoC 입증). 파일 위치: cbor/src/main/java/.../cbor/CBORParser.java (태그 처리 -> TagList).
CBOR는 데이터 항목 앞에 임의의 수의 시맨틱 태그가 precede될 수 있도록 허용합니다. CBAP 파서는 이를 TagList에 축적하며, 해당 백킹 배열은 2배 증가(doubling) 대신 고정된 증분(+8)으로 확장되고, 각 확장마다 재스캔 및 복사가 수행됩니다. 공격자는 긴 태그 바이트 시퀀스로precede된 값을 전송합니다. 이 고정 증분 방식의 확장은 N개의 태그를 축적하는 데 O(N^2) 시간(및 GC 부하)이 소요되며, 중첩될 수 있는 태그 수에 대한 제한이 없습니다.
PoC (JDK 17에서 실행됨): 사소한 값 앞에 긴 태그 바이트 시퀀스(예: tag 0xC0+)로 구성된 CBOR 스트림을 공급하면 이차적 CPU/GC 고갈이 발생합니다. 파싱 시간은 태그 수에 따라 초선형적으로(super-linearly) 증가하며, 구성 가능한 제한 없이 요청 스레드를 고정(pinning)시킵니다.
영향: 알고리즘 복잡성 기반 서비스 거부(CWE-407): 중첩된 태그의 소규모 입력으로도 이차적 CPU/GC 고갈이 발생하여 요청 스레드가 고정되고, 동시 요청들이 풀(pool)을 고갈시킵니다.
해결책: TagList를 2배 증가(doubling) 방식으로 확장하거나, StreamReadConstraints 스타일로 중첩된 태그 수에 제한(cap)을 설정합니다.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.