
CVE-2026-2332 и ещё 4 CVE в Jetty 2026 года: какие из них затрагивают вашу сборку Jetty (или Spring Boot), и существует ли вообще на Maven Central та исправленная версия, которую называет Jetty? Для EOL-линий 9.4/10/11 ответ — «см. подробности о доступности» = 404.
Какие из пяти CVE 2026 года затрагивают ваш Jetty (или Jetty, притащенный Spring Boot) — и существует ли вообще на Maven Central та версия, на которую официально велят обновиться?
Главная тема — CVE-2026-2332 (GHSA-355h-qmc2-wpwf, high / CVSS v3 7.4): контрабанда запросов через chunked в jetty-http.
Самый железный факт: публичных исправленных версий для трёх EOL-линий 9.4 / 10 / 11 попросту не существует — официальная страница безопасности для каждой из них пишет
see details for availability (= коммерческая поддержка), а эти номера версий на Maven Central по факту все 404.
java -jar jetty-line-check.jar /path/to/jetty # распакованный развёрнутый Jetty (сканирует lib/*.jar)
java -jar jetty-line-check.jar app.war # war
java -jar jetty-line-check.jar app.jar # Spring Boot fat jar
java -jar jetty-line-check.jar --table # только таблица判定 для пяти CVE × модулей × линий версий
java -jar jetty-line-check.jar --utf8 ... # при кракозябрах в консоли Windows
У родственного проекта tomcat-line-check критерий — «есть ли в jar некий исправляющий класс», потому что та правка Tomcat добавила новый класс.
С Jetty это не работает. В основной CVE-2026-2332 исправление меняет тело метода HttpParser, не добавляя никаких классов
(перед сборкой это подтверждено через gh api compare + javap). Поэтому критерий может быть только таким:
Какие CVE затрагивают ваши полные координаты + линию версий; и существует ли вообще на Maven Central та исправленная версия, которую официально называют.
Таблица判定 генерируется tools/gen_table.py из vulnerabilities[] пяти GitHub advisory + реального HEAD-зондирования jar на Maven Central,
и отказывается выдавать таблицу, если не проходят семь групп утверждений (положительный контроль / ключевое утверждение / финальные версии старых линий / дозорный / структура основной темы / раздробленные модули / рейтинги).
| Три состояния | Значение |
|---|---|
PUBLIC | advisory называет исправленную версию, и она действительно есть на Maven Central — публично доступна для обновления |
404 | advisory называет исправленную версию, но она на Central даёт 404 — официальная страница безопасности пишет see details for availability (коммерческая поддержка) |
无 | advisory вообще не даёт исправленной версии для этой линии (first_patched_version пуст) — починить эту линию можно только переходом на другую мажорную версию |
Вся эта россыпь 404 и 无 для старых линий (9.4 / 10.0 / 11.0) — вот в чём ценность этого инструмента. Запустите --table, чтобы увидеть полную картину.
org.eclipse.jetty, 2026 год)| CVE | Модуль | Рейтинг | В двух словах |
|---|---|---|---|
| CVE-2026-2332 | jetty-http | high / v3 7.4 | ⭐ Основная тема: \r\n внутри chunked quoted-string воспринимается как конец заголовка чанка → контрабанда запросов (CWE-444) |
| CVE-2026-5795 | jaspi (в 12.x раздроблен на ee8/9/10/11-jaspi) | high / v3 7.4 | ThreadLocal в JASPI не очищается → превышение полномочий |
| CVE-2026-6790 | jetty-server | medium / v3 5.3 | Путаница Host / :authority в HTTP/2·3 |
| CVE-2026-10050 | jetty-security (в 12.x добавлены ee8/9-security) | high / v4 8.7 | Обработка ISO-8859-1 в Digest-аутентификации |
| CVE-2025-11143 | jetty-http | low / v3 3.7 | Расхождение в разборе URI |
🔴 Только у основной 2332 поверхность атаки выдерживает критику (путь контрабанды лежит на основном пути разбора по умолчанию — ServerConnector / HttpParser,
не требуется включать никаких специальных функций). Остальные четыре — лишь строка в таблице判定:
CVE-2026-10050 (Digest) поверхность атаки очень мала — нужно явно включить Digest-аутентификацию, чтобы до неё добраться; не подавайте её как главный аргумент.CVE-2026-6790 — medium, CVE-2025-11143 — low — нельзя обобщённо называть их «высокорисковыми».see details for availability, и на этом точка.GHSA-r7p8-xq5m-436c · GHSA-7p3p-8qv8-m2vh · GHSA-2fvj-hgj9-j2gr · GHSA-wjpw-4j6x-6rwhsee details for availability): https://jetty.org/security.htmlpython tools/gen_table.py --dry # только прогнать утверждения, не писать файлы
python tools/gen_table.py # записать CveTable.java только если все утверждения прошли
python tools/recheck_before_publish.py # перезапустить в день публикации; если утверждение перестало действовать — правьте текст, а не критерий
mvn package # нужен JDK 17; во время выполнения зависимостей нет (JUnit только для тестов)
| Код | Значение |
|---|---|
0 | Сканирование завершено, и каждый файл действительно был прочитан |
2 | Ошибка использования (не указан путь) |
4 | Есть файл, который не читается — не zip, обрезанное содержимое или ошибка чтения |
🔴 Причина для 4: след нужен для людей, а CI и скрипты смотрят на код выхода. Без него повреждённый / зашифрованный / недокачанный jar
тихо превратится в фразу «проблем не обнаружено» — «я не могу это прочитать» и «вы в безопасности» должны быть двумя разными фразами.
⚠️ Легальный пустой jar (одна 22-байтная запись EOCD) не считается нечитаемым и не вызывает 4.
MIT