
CVE-2026-2332 y 4 CVE más de Jetty de 2026: ¿a cuáles afecta tu compilación de Jetty (o Spring Boot), y existe siquiera en Maven Central la versión corregida que Jetty nombra? Para las líneas EOL 9.4/10/11 la respuesta es 'consulta los detalles para disponibilidad' = 404.
¿Cuáles de estas cinco CVE de 2026 afectan a tu Jetty (o al Jetty que arrastra Spring Boot) — y la versión a la que la documentación oficial te dice que actualices, existe realmente en Maven Central?
El foco principal es CVE-2026-2332 (GHSA-355h-qmc2-wpwf, high / CVSS v3 7.4): contrabando de peticiones chunked en jetty-http.
El hecho más contundente: las versiones públicas corregidas de las tres líneas EOL 9.4 / 10 / 11 simplemente no existen — la página oficial de seguridad dice de cada una
see details for availability (= soporte comercial), y esos números de versión dan todos 404 al comprobarlos en Maven Central.
java -jar jetty-line-check.jar /path/to/jetty # Jetty desplegado y descomprimido (escanea 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 # solo la tabla de veredictos de las cinco CVE × módulo × línea de versión
java -jar jetty-line-check.jar --utf8 ... # añádelo si la consola de Windows muestra caracteres chinos corruptos
El criterio del proyecto hermano tomcat-line-check es «¿hay cierta clase de corrección dentro del jar?», porque aquella corrección de Tomcat añadió una clase nueva.
Con estas de Jetty no funciona. La corrección de la CVE-2026-2332, el foco principal, modifica el cuerpo del método de HttpParser y no añade ninguna clase
(se confirmó antes de construirlo con gh api compare + javap). Así que el criterio solo puede ser:
Tus coordenadas completas + línea de versión, qué CVE afectan; y si la versión corregida que señala la documentación oficial existe realmente en Maven Central.
La tabla de veredictos la genera tools/gen_table.py a partir de los vulnerabilities[] de las cinco advisories de GitHub + sondeo HEAD de jars reales en Maven Central,
y se niega a emitir la tabla si no pasan los siete grupos de aserciones (control positivo / afirmación central / versión final de líneas antiguas / centinela / estructura del foco principal / módulos fragmentados / calificación).
| Tres estados | Significado |
|---|---|
PUBLIC | La advisory nombra una versión corregida y esta sí está en Maven Central — actualización pública disponible |
404 | La advisory nombra una versión corregida, pero esta da 404 en Central — la página oficial de seguridad dice see details for availability (soporte comercial) |
无 | La advisory no da en absoluto versión corregida para esa línea (first_patched_version vacío) — para corregir esa línea solo cabe saltar de versión mayor |
Toda esa franja de 404 y 无 de las líneas antiguas (9.4 / 10.0 / 11.0) es justamente el valor de esta herramienta. Ejecuta --table para ver el panorama completo.
org.eclipse.jetty, año 2026)| CVE | Módulo | Calificación | En una frase |
|---|---|---|---|
| CVE-2026-2332 | jetty-http | high / v3 7.4 | ⭐ Foco principal: el \r\n dentro de un quoted-string chunked se toma como fin de cabecera de chunk → contrabando de peticiones (CWE-444) |
| CVE-2026-5795 | jaspi (en 12.x se fragmenta en ee8/9/10/11-jaspi) | high / v3 7.4 | El ThreadLocal de JASPI no se limpia → escalada de privilegios |
| CVE-2026-6790 | jetty-server | medium / v3 5.3 | Confusión de Host / :authority en HTTP/2·3 |
| CVE-2026-10050 | jetty-security (en 12.x se añade ee8/9-security) | high / v4 8.7 | Tratamiento ISO-8859-1 en la autenticación Digest |
| CVE-2025-11143 | jetty-http | low / v3 3.7 | Diferencia en el análisis de URI |
🔴 Solo la superficie afectada de la 2332, el foco principal, se sostiene (la ruta de contrabando cae en la ruta principal de análisis por defecto ServerConnector / HttpParser,
sin necesidad de activar ninguna función concreta). Las otras cuatro son solo una fila en la tabla de veredictos:
CVE-2026-10050 (Digest) es muy pequeña — solo se alcanza si se habilita explícitamente la autenticación Digest; no la uses como argumento de venta principal.CVE-2026-6790 es medium y CVE-2025-11143 es low — no se permite llamarlas «de alto riesgo» en conjunto.see details for availability, y hasta ahí.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 # solo ejecuta las aserciones, no escribe archivos
python tools/gen_table.py # solo si pasan todas las aserciones escribe CveTable.java
python tools/recheck_before_publish.py # reejecutar el día de la publicación; si una afirmación deja de valer, cambia el texto, no el criterio
mvn package # requiere JDK 17; cero dependencias en tiempo de ejecución (JUnit solo en fase de pruebas)
| Código | Significado |
|---|---|
0 | El escaneo terminó y todos los archivos se leyeron de verdad |
2 | Error de uso (no se dio ninguna ruta) |
4 | Hay archivos que no se pueden leer — no es un zip, contenido truncado o fallo de lectura |
🔴 El motivo del 4: el rastro es para que lo lea una persona, pero CI y los scripts miran el código de salida. Sin él, un jar corrupto / cifrado / descargado a medias
se convertiría silenciosamente en un «no se encontraron problemas» — «no puedo leerlo» y «estás a salvo» tienen que ser dos frases distintas.
⚠️ Un jar vacío legítimo (un único registro EOCD de 22 bytes) no cuenta como ilegible y no dispara el 4.
MIT