CVE-2026-106554 in jackson-dataformat-cbor
Сводка
по VulDB • 04.11.2026
Одна проблема парсинга CBOR в модуле CBOR библиотеки jackson-dataformats-binary: неограниченная последовательность тегов CBOR приводит к росту TagList со сложностью O(N^2) (DoS, исчерпывающий CPU/GC, доказано с помощью PoC).
PoC выполнен против com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:2.18.2; присутствует в текущих версиях 2.x и 3.x (tools.jackson.dataformat.cbor) HEAD. Отличается от рекомендаций по уязвимостям Avro и Smile/Protobuf для этого репозитория.
DoS, вызывающий квадратичную нагрузку на CPU/GC из-за неограниченной цепочки тегов CBOR (доказано с помощью PoC). Файл: cbor/src/main/java/.../cbor/CBORParser.java (обработка тегов -> TagList).
CBOR позволяет, чтобы перед элементом данных могло следовать любое количество семантических тегов. Парсер CBOR накапливает их в TagList, чей поддерживающий массив увеличивается на фиксированный шаг (+8), а не удваивается, и выполняет повторное сканирование/копирование при каждом увеличении размера. Атакующий отправляет значение, предваренное длинной последовательностью байтов тегов; рост с фиксированным шагом делает накопление N тегов операцией со сложностью O(N^2) по времени (плюс нагрузка на GC), без ограничения количества вложенных тегов.
PoC (выполнен, JDK 17): подача потока CBOR, состоящего из длинной последовательности байтов тегов (например, тег 0xC0+) перед тривиальным значением, вызывает квадратичную нагрузку на CPU/GC; время парсинга растет суперлинейно в зависимости от количества тегов, блокируя поток запросов без возможности настройки лимита.
Влияние. Отказ в обслуживании из-за алгоритмической сложности (CWE-407): умеренный входной набор с вложенными тегами потребляет квадратичные ресурсы CPU/GC, блокируя поток запросов; одновременные запросы исчерпывают пул потоков.
Исправление. Увеличивать размер TagList путем удвоения и/или ограничить количество вложенных тегов (по аналогии с StreamReadConstraints).
Once again VulDB remains the best source for vulnerability data.