
Exploit proof-of-concept per CVE-2024-48990, che dimostra l'escalation dei privilegi locale in needrestart tramite manipolazione di PYTHONPATH. Include script runner e binario payload per i test.
Needrestart è un'utilità ampiamente utilizzata sui sistemi Linux (predefinita in molte versioni di Ubuntu) che, dopo un aggiornamento del software, controlla se un servizio o il sistema stesso deve essere riavviato. Analizzando i processi in esecuzione, determina se stanno utilizzando librerie aggiornate o se devono essere riavviati affinché le modifiche vengano applicate.
Quando needrestart rileva un processo che esegue un interprete Python, legge la variabile d'ambiente PYTHONPATH associata a quel processo da /proc/[pid]/environ e la imposta prima di avviare il proprio interprete Python per l'analisi.
Se il processo originale appartiene a un attaccante locale, quest'ultimo può manipolare PYTHONPATH per farlo puntare a una libreria dannosa.
Di conseguenza, quando needrestart esegue l'interprete Python con privilegi di root e la PYTHONPATH manipolata, finisce per eseguire il codice dell'attaccante, portando a un'escalation dei privilegi a root.
Questa vulnerabilità riguarda solo le versioni di needrestart precedenti alla 3.8. Le versioni 3.8 e successive includono una correzione che igienizza adeguatamente variabili d'ambiente come PYTHONPATH prima di richiamare l'interprete Python, impedendo l'escalation dei privilegi tramite la manipolazione dannosa dell'ambiente.
Clonare il repository.
In runner.sh, modificare l'IP utilizzato per scaricare il binario compilato in modo che punti alla propria macchina.
Sulla macchina dell'attaccante, concedere i permessi di esecuzione ed eseguire binary.sh.
Configurare un server HTTP:
$ python3 -m http.server
