
CVE-2026-2332 e altre 4 CVE di Jetty del 2026: quali colpisce la tua build di Jetty (o Spring Boot), e la versione corretta indicata da Jetty esiste davvero su Maven Central? Per le linee EOL 9.4/10/11 la risposta è 'vedi i dettagli per la disponibilità' = 404.
Il tuo Jetty (o il Jetty portato dentro da Spring Boot), quali delle cinque CVE del 2026 ha colpito — e la versione che l'ufficiale ti dice di aggiornare, esiste davvero su Maven Central?
Focus su CVE-2026-2332 (GHSA-355h-qmc2-wpwf, high / CVSS v3 7.4): request smuggling con richieste chunked in jetty-http.
Il fatto più duro: le versioni pubbliche corrette delle tre vecchie linee EOL 9.4 / 10 / 11 semplicemente non esistono — la pagina di sicurezza ufficiale per ciascuna di esse riporta
see details for availability (= supporto commerciale), e quei numeri di versione su Maven Central risultano tutti 404 alla verifica.
java -jar jetty-line-check.jar /path/to/jetty # Jetty distribuito scompattato (scansiona 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 # mostra solo la tabella di giudizio delle cinque CVE × moduli × linee di versione
java -jar jetty-line-check.jar --utf8 ... # da aggiungere quando la console Windows mostra caratteri cinesi corrotti
Il criterio del progetto gemello tomcat-line-check è «se nel jar c'è una certa classe di fix», perché quella correzione di Tomcat ha aggiunto una nuova classe.
Per queste di Jetty non funziona. La correzione della principale CVE-2026-2332 modifica il corpo del metodo di HttpParser, senza aggiungere alcuna classe
(verificato prima della costruzione con gh api compare + javap). Quindi il criterio non può che essere:
Le tue coordinate complete + la linea di versione, quali CVE colpiscono; e la versione corretta indicata ufficialmente, se esiste davvero su Maven Central.
La tabella di giudizio è generata da tools/gen_table.py a partire dalle vulnerabilities[] di cinque advisory GitHub + verifica HEAD reale dei jar su Maven Central,
e rifiuta di produrre la tabella se non passano sette gruppi di asserzioni (controllo positivo / tesi centrale / versione finale delle vecchie linee / sentinella / struttura della principale / moduli scissi / rating).
| Tre stati | Significato |
|---|---|
PUBLIC | l'advisory indica una versione corretta, ed essa esiste davvero su Maven Central — aggiornamento pubblico possibile |
404 | l'advisory indica una versione corretta, ma su Central è 404 — la pagina di sicurezza ufficiale riporta see details for availability (supporto commerciale) |
无 | l'advisory non fornisce affatto una versione corretta per questa linea (first_patched_version vuoto) — per correggere questa linea bisogna passare a una major superiore |
Tutta quella distesa di 404 e 无 sulle vecchie linee (9.4 / 10.0 / 11.0) è il valore di questo strumento. Esegui --table per vedere il quadro completo.
org.eclipse.jetty reviewed, anno 2026)| CVE | Modulo | Rating | In una frase |
|---|---|---|---|
| CVE-2026-2332 | jetty-http | high / v3 7.4 | ⭐ Principale: il \r\n dentro un quoted-string chunked viene trattato come fine dell'header di chunk → request smuggling (CWE-444) |
| CVE-2026-5795 | jaspi (in 12.x scisso in ee8/9/10/11-jaspi) | high / v3 7.4 | ThreadLocal di JASPI non ripulito → escalation di privilegi |
| CVE-2026-6790 | jetty-server | medium / v3 5.3 | Confusione Host / :authority in HTTP/2·3 |
| CVE-2026-10050 | jetty-security (in 12.x aggiunge ee8/9-security) | high / v4 8.7 | Gestione ISO-8859-1 nell'autenticazione Digest |
| CVE-2025-11143 | jetty-http | low / v3 3.7 | Differenze nel parsing degli URI |
🔴 Solo la superficie interessata della principale 2332 regge (il percorso di smuggling cade sul percorso di parsing predefinito ServerConnector / HttpParser,
senza bisogno di abilitare alcuna funzione specifica). Le altre quattro valgono solo come una riga nella tabella di giudizio:
CVE-2026-10050 (Digest) è molto piccola — la si tocca solo abilitando esplicitamente l'autenticazione Digest, non usarla come argomento di vendita principale.CVE-2026-6790 è medium, CVE-2025-11143 è low — vietato chiamarle tutte «ad alto rischio».see details for availability, e finisce lì.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 # esegue solo le asserzioni, senza scrivere file
python tools/gen_table.py # scrive CveTable.java solo se tutte le asserzioni passano
python tools/recheck_before_publish.py # rieseguito il giorno della pubblicazione, se una tesi decade si cambia il testo, non il criterio
mvn package # richiede JDK 17; zero dipendenze a runtime (JUnit solo in fase di test)
| Codice | Significato |
|---|---|
0 | Scansione completata, e ogni file è stato effettivamente letto |
2 | Errore d'uso (nessun percorso fornito) |
4 | C'è un file illeggibile — non è uno zip, contenuto troncato, o lettura fallita |
🔴 Il motivo del 4: la traccia è per gli esseri umani, CI e script guardano il codice di uscita. Senza di esso, un jar corrotto / cifrato / scaricato incompleto
diventerebbe silenziosamente una frase «nessun problema rilevato» — «non riesco a leggerlo» e «sei al sicuro» devono essere due frasi distinte.
⚠️ Un jar vuoto legittimo (un singolo record EOCD di 22 byte) non conta come illeggibile e non attiva il 4.
MIT