Jenkins è un server di automazione open-source ampiamente utilizzato per pipeline di integrazione e distribuzione continua (CI/CD), supportando la compilazione, il testing e il deployment del software su diverse piattaforme.
Divulgata nell’aprile 2017, CVE-2017-1000353 è una vulnerabilità critica di deserializzazione che permetteva agli aggressori di eseguire codice arbitrario da remoto senza autenticazione.
La vulnerabilità interessa le main line releases di Jenkins fino alla versione 2.56 inclusa e le LTS releases di Jenkins fino alla 2.46.1 inclusa.
| Prodotto | Jenkins |
| Data | 2025-10-07 12:41:25 |
Riassunto tecnico
La vulnerabilità deriva da una deserializzazione Java non sicura nella funzionalità di remoting della CLI (Command Line Interface) di Jenkins. In particolare, il bug risiede nella funzione readFrom all’interno di Command.java, dove Jenkins deserializza dati controllati dall’utente, provenienti da un’istanza di ObjectInputStream.
Il problema principale è che gli aggressori possono trasferire un oggetto Java serializzato SignedObject alla CLI di Jenkins basata su remoting, che verrà quindi deserializzato tramite un nuovo ObjectInputStream, eludendo il meccanismo di protezione basato su blocklist.
Poiché la blocklist esistente in Jenkins non includeva SignedObject, la sua deserializzazione innescava la deserializzazione del contenuto incapsulato;
Lo scenario di attacco avrebbe questo aspetto:
Gli aggressori inviano due richieste HTTP:
- La prima richiesta stabilisce una sessione CLI Jenkins valida con due canali (upload/download);
- La seconda richiesta carica un SignedObject contenente un oggetto Java serializzato malevolo;
La funzione readFrom deserializza il SignedObject;
Il contenuto incapsulato del SignedObject viene quindi deserializzato, eludendo la blocklist;
Catene di gadget malevoli si attivano durante la deserializzazione ed eseguono codice arbitrario con i privilegi del server Jenkins.
Raccomandazioni
- Applicare la patch immediatamente: Aggiornare tutte le istanze di Jenkins alla versione 2.57 (weekly) o 2.46.2 LTS.
- Disabilitare la CLI basata su remoting: Dopo l’aggiornamento, gli utenti dovrebbero disabilitare la CLI basata su remoting e passare ad altre modalità (HTTP o SSH).
- Ricerca e monitoraggio: Implementare regole WAF per rilevare firme di attacchi di deserializzazione Java e rivedere i log di accesso Jenkins alla ricerca di pattern sospetti nella creazione di sessioni CLI.