Rischio Remote Code Execution per Jenkins, ma c'è già una soluzione
Una buona fetta di aziende fanno conto su Jenkins come "motore" per i loro flussi di CI/CD, motivo per cui qualsiasi possibile vulnerabilità di Jenkins stesso è, se di livello abbastanza serio, una questione da affrontare rapidamente. Ora lo staff di Jenkins segnala, grazie alla ulteriore segnalazione di SonarSource, una vulnerabilità di livello critico che può portare alla esecuzione di codice da remoto.
Catalogata come CVE-2024-23897 "Arbitrary file read vulnerability through the CLI can lead to RCE", la vulnerabilità è legata alla interfaccia di Jenkins a linea di comando (CLI), che permette di lanciare Jenkins stesso da uno script o da una shell.
Partecipa agli ItalianSecurityAwards 2024 ed esprimi il tuo voto premiando le soluzioni di cybersecurity che reputi più innovative
Jenkins utilizza la libreria args4j per il parsing degli argomenti e delle opzioni dei comandi passati via CLI. Questo parser ha una funzione che sostituisce un carattere @ seguito da un percorso di file in un argomento con il contenuto del file. Questa funzione è abilitata per default.
Ciò in teoria consente a un eventuale attaccante di leggere, del tutto o in parte, file arbitrari sul file system del controller Jenkins, utilizzando la codifica dei caratteri predefinita del processo del controller Jenkins. Il team di sicurezza di Jenkins conferma che questo comportamento permette anche di leggere file binari che contengono le chiavi crittografiche usate per varie funzioni di Jenkins.
Sempre in teoria, tutto questo apre la strada ad alcuni scenari di Remote Code Execution e alla possibilità di decifrare segreti memorizzati in Jenkins (ad esempio le chiavi per accedere ad un servizio cloud), di cancellare elementi della piattaforma e di scaricare un dump della heap del Jenkins controller.
La vulnerabilità è stata risolta con la versione Jenkins 2.442 LTS 2.426.3, che disabilita il parser "pericoloso". Chi non potesse installare questa versione può solo disabilitare l'interfaccia CLI della piattaforma. Più dettagli sono disponibili all'advisory specifico di Jenkins, mentre SonarSource ha pubblicato una analisi approfondita della vulnerabilità.