Разбор CVE-2026-83557 в jackson-databind: почему не всех CVE надо бояться
BugM 55 минут назад Разбор CVE-2026-83557 в jackson-databind: почему не всех CVE надо бояться Средний 5 мин 456 Информационная безопасность * Java * Программирование * Мнение Утро четверга. Вы открываете таск-трекер, а...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
В сфере искусственного интеллекта произошло заметное событие. BugM 55 минут назад Разбор CVE-2026-83557 в jackson-databind: почему не всех CVE надо бояться Средний 5 мин 456 Информационная безопасность * Java * Программирование * Мнение Утро четверга. Вы открываете таск-трекер, а там тикет от сканера зависимостей: «jackson-databind, CVE-2026-83557, критично, патчить». Ссылка на GitHub-бюллетень, CVSS, слово «полиморфная десериализация», и через двадцать минут у вас уже согласован hotfix на прод в пятницу в 18:00.
Я проделал обратное: взял описание, собрал работающий эксплойт и выполнил его на уязвимой и пропатченной версиях. Рассказываю, почему для большинства проектов тут хватает тикета «в ближайший релиз», без всякого горения. И заодно о том, почему не каждой CVE из сканера стоит верить на слово.
Технические детали
Что вообще случилосьJackson умеет в полиморфную десериализацию: в JSON кладется идентификатор типа, и библиотека по нему инстанцирует нужный класс. Выглядит это так:public Это формат WRAPPER_ARRAY: первый элемент массива служит именем класса, второй содержит данные, из которых Jackson соберет экземпляр. Понятно, что нельзя принимать произвольные имена классов из непроверенного JSON, поэтому в Jackson есть механизм PolymorphicTypeValidator, который решает, какой подтип допустим для данного базового типа.
Валидатор по умолчанию называется DefaultBaseTypeLimitingValidator. Задумка у него такая: держать черный список «небезопасных» базовых типов, с полиморфизмом на которых Jackson решил бороться. Позиций в списке девять, от банальных Object и Serializable до javax.
Все, что в список не попало, одобряется - проверять подтип валидатор не умеет вообще. Вот и вся CVE: в списке забыли java. Comparable реализует куча JDK-классов, от численных оберток до String и File.
Отраслевые последствия
Если есть полиморфное свойство с базовым типом Comparable, атакующий подсунет type id почти любого из них, и Jackson молча создаст экземпляр. Версия jackson-databind у вас в проекте с огромной вероятностью попадет под диапазон уязвимых (это 2. Поэтому не будем тратить время на версию, а сразу посмотрим на два реальных барьера в вашем коде.
Барьер первый: включенный флаг защитыDefaultBaseTypeLimitingValidator подключается только при включенном MapperFeature. BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES. По умолчанию этот флаг выключен.
Что происходит без флага? Для обычного свойства с @JsonTypeInfo(Id. CLASS) Jackson использует LaissezFaireSubTypeValidator, который разрешает все.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.






