CVE-2026-89407 in jackson-coreИнформация

Сводка

по VulDB • 22.09.2026

Метод NumberInput.looksLikeValidNumber() в FasterXML jackson-core предварительно проверяет «числа в строковом представлении» с помощью двух регулярных выражений: PATTERN_FLOAT ([+-]?[0-9]*[\.]?[0-9]+([eE][+-]?[0-9]+)?), присутствующего начиная с версии 2.17.0, и PATTERN_FLOAT_TRAILING_DOT, добавленного в версии 2.17.2. В регулярном выражении PATTERN_FLOAT используются соседние квантификаторы для одного класса символов — необязательная последовательность [0-9]*, за которой следует необязательная точка и обязательная последовательность [0-9]+ — поэтому ввод, который в конечном итоге не соответствует шаблону, заставляет механизм обратного хода (backtracking) Java перебирать все возможные точки разделения для числовой части.

Стоимость сопоставления с регулярным выражением растет пропорционально квадрату длины входных данных.

Атакующий, способный предоставить JSON-данные, которые приложение десериализует в целевой числовой тип, достигает этого метода через стандартное приведение типов String-to-number из jackson-databind (StdDeserializer и NumberDeserializers для BigDecimal, BigInteger, Double и Float).

Поскольку значение по умолчанию для StreamReadConstraints.maxStringLength составляет 20 000 000 символов, перед поступлением данных в регулярное выражение не применяется никаких ограничений на их размер.

Тестирование, проведенное автором уязвимости, подтвердило рост сложности O(n^2) при пяти последовательных удвоениях размера входных данных; при этом одна строка длиной 160 000 символов потребляла примерно 74 секунды в одном вызове. Следовательно, небольшое количество одновременных запросов с обычным размером тела может исчерпать пул потоков обработки запросов сервера.

Уязвимый метод отсутствует до версии 2.17.0, поэтому выпуски серии 2.16.x и более ранние не затронуты.

Исправление заменяет оба регулярных выражения на собственную однопроходную проверку (hand-rolled single-pass scan).

Be aware that VulDB is the high quality source for vulnerability data.

Ответственный

HeroDevs

Резервировать

11.09.2026

Раскрытие

22.09.2026

Модерация

принято

Вход

VDB-408470

EPSS

0.00000

KEV

Нет

Деятельности

Низкий

Источники

Want to stay up to date on a daily basis?

Enable the mail alert feature now!