Sono stati resi pubblici diversi exploit proof-of-concept (PoC) per due vulnerabilità di Jenkins che consente ad aggressori non autenticati di leggere file arbitrari. Jenkins è un server di automazione open source ampiamente utilizzato nello sviluppo di software, in particolare per l'integrazione continua (CI) e la distribuzione continua (CD). Tale strumento svolge un ruolo fondamentale nell'automazione di varie parti del processo di sviluppo del software, come la creazione, il test e la distribuzione delle applicazioni. Supporta oltre un migliaio di plugin di integrazione ed è utilizzato da organizzazioni di tutte le dimensioni, comprese le grandi imprese. A scoprire tale vulnerabilità, attivamente sfruttata negli attacchi, sono stati i ricercatori della società di sicurezza SonarSource. Secondo quanto riferito, i due difetti in Jenkins potrebbero consentire agli attacchi di accedere ai dati in server vulnerabili ed eseguire comandi CLI arbitrari in determinate condizioni.
Jenkins: i dettagli delle due vulnerabilità sfruttate dagli aggressori
Il primo difetto, considerato critico, è CVE-2024-23897. Questo consente agli aggressori non autenticati con autorizzazione "generale/lettura" di leggere dati da file arbitrari sul server Jenkins. Gli aggressori senza questa autorizzazione possono comunque leggere le prime righe dei file, con il numero che dipende dai comandi CLI disponibili. Il difetto deriva dal comportamento predefinito del parser dei comandi args4j in Jenkins, che espande automaticamente il contenuto del file in argomenti di comando quando un argomento inizia con il carattere “@”, consentendo la lettura non autorizzata di file arbitrari sul file system del controller Jenkins. Sonar ha spiegato che lo sfruttamento di questa particolare falla potrebbe portare all'escalation dei privilegi di amministratore e all'esecuzione arbitraria di codice remoto. Questo passaggio dipende però da alcune condizioni che devono essere soddisfatte, diverse per ogni variante di attacco.
La seconda vulnerabilità, identificata come CVE-2024-23898, è un problema di dirottamento WebSocket tra siti in cui gli aggressori potrebbero eseguire comandi CLI arbitrari inducendo un utente a fare clic su un collegamento dannoso. Il rischio derivante da questo bug dovrebbe essere mitigato dalle policy di protezione esistenti nei browser web. Tuttavia, persiste a causa della mancanza di applicazione universale di tali policy. Il 24 gennaio 2024, Jenkins ha rilasciato le correzioni per i due difetti con le versioni 2.442 e LTS 2.426.3. Inoltre, molti ricercatori hanno riprodotto alcuni scenari di attacco e creato exploit PoC funzionanti pubblicati su GitHub. I PoC riguardano CVE-2024-23897, che fornisce agli aggressori l'esecuzione di codice remoto su server Jenkins senza patch. Molti di questi PoC sono già stati convalidati. Alcuni ricercatori riferiscono infine che i loro honeypot Jenkins hanno già rilevato attività in natura, suggerendo che gli hacker abbiano iniziato a sfruttare le vulnerabilità.