Почему CVE-2026-83557 не требует срочного патча у всех
Пришло уведомление об обновлении jackson-databind из-за CVE-2026-83557 — о ней вчера написали на Хабре. Суть: в версиях 2.11–2.18.9, 2.19.0–2.21.5 и 2.22.0–2.22.1 был пробел в проверке при десериализации JSON, если поле объявлено как Comparable и включён флаг защиты. Уязвимость позволяет создавать экземпляры классов из classpath, например, File, но только если в коде есть такие поля и включён этот флаг. В остальных случаях — ничего не происходит. Патч вышел в 2.18.10, 2.21.6 и 2.22.2, но он ломает работу, если у вас есть легитимная полиморфия на Comparable. } {
Считаю, что это важнее, чем кажется на первый взгляд. Уязвимость есть, но она не «всем срочно патчить». Она работает только при двух условиях: включён флаг защиты и есть полиморфное поле типа Comparable. В большинстве проектов такого нет — это редкий паттерн. Значит, для большинства клиентов это не угроза, а шум. А вот если у кого-то включён флаг и есть такое поле — тогда да, нужно смотреть.
На мой взгляд, главная проблема не в самой CVE, а в том, как она трактуется сканерами. Они видят номер и версию — и сразу в панике. А на деле, без двух конкретных условий, уязвимость не сработает. Я уже проверяю у своих клиентов: включаю флаг — смотрю, есть ли Comparable-поля с @JsonTypeInfo. Если нет — закрываю тикет без патча. Если есть — смотрю, насколько это критично.
У себя сделал так: добавил проверку в план на неделю. Пока не патчу всех — сначала проверяю, где реально есть риск. Если у кого-то включён флаг, но полей нет — патч не нужен. Если есть — решаем, как безопасно переписать. Главное — не поддаваться панике из-за номера CVE. Сканер не знает код, а я знаю.