Qualys ha pubblicato uno studio che mostra cinque problemi di privilege escalation relativi a needrestart, uno strumento che verifica se i servizi devono essere riavviati dopo aggiornamenti di librerie o pacchetti, utilizzato di default in Ubuntu (nota bene, nelle versioni server, non desktop) sin dalla versione 21.04 ed introdotti oltre dieci anni fa.
Il problema potrebbe consentire a utenti non privilegiati di sfruttare l’esecuzione non sicura di comandi o script, ottenendo privilegi elevati.
In particolare ci sono queste cinque CVE, ciascuna con una sua particolare modalità di sfruttamento:
- CVE-2024-48990 Needrestart esegue l’interprete Python con una variabile di ambiente PYTHONPATH estratta dai processi in esecuzione. Se un utente locale controlla questa variabile, può eseguire codice arbitrario come root durante l’inizializzazione di Python inserendo una libreria condivisa dannosa.
- CVE-2024-48992: L’interprete Ruby utilizzato da Needrestart è vulnerabile quando elabora una variabile di ambiente RUBYLIB controllata dall’attaccante. Ciò consente a un attaccante locale di eseguire codice Ruby arbitrario come root iniettando librerie dannose.
- CVE-2024-48991: Una race condition in Needrestart permette a un attaccante locale di sostituire il file binario dell’interprete Python con un eseguibile dannoso, ingannando Needrestart per eseguire il proprio codice come root.
- CVE-2024-10224: Il modulo Perl ScanDeps utilizzato da Needrestart gestisce in modo insicuro i nomi dei file forniti dall’attaccante. Ciò può portare all’esecuzione di comandi arbitrari come root quando i file vengono aperti.
- CVE-2024-11003: L’uso del modulo ScanDeps di Perl espone Needrestart a vulnerabilità che coinvolgono l’uso insicuro delle funzioni eval(). Questo può consentire l’esecuzione di codice arbitrario con input controllato dall’attaccante.
Come si può osservare la superficie d’attacco è limitata solo dalla fantasia. Come indicato chiaramente dal report gli aggressori avrebbero bisogno di avere accesso locale al sistema operativo tramite malware o un account compromesso per sfruttare queste falle, ma vien da sé come in ogni caso la problematica sia degna di nota.
Oltre all’aggiornamento alla versione 3.8 o successiva, che include patch per tutte le vulnerabilità identificate, il consiglio che viene dato per evitare la problematica è quello di modificare il file /etc/needrestart/needrestart.conf in questo modo:
# Disable interpreter scanners. $nrconf{interpscan} = 0;la modifica, lascia intendere il commento, disabilita lo scanner dell’interprete del codice che, come avrete capito, è la causa del problema in quanto consente di annidare il codice malevolo che viene eseguito con i privilegi di root propri di needrestart.
Da sempre appassionato del mondo open-source e di Linux nel 2009 ho fondato il portale Mia Mamma Usa Linux! per condividere articoli, notizie ed in generale tutto quello che riguarda il mondo del pinguino, con particolare attenzione alle tematiche di interoperabilità, HA e cloud.
E, sì, mia mamma usa Linux dal 2009.