
Analyse technique et preuve de concept pour CVE-2024-48990, une vulnérabilité d'élévation de privilèges dans needrestart permettant à des attaquants locaux d'exécuter du code arbitraire en tant que root via la manipulation de PYTHONPATH.
Pour déterminer si un processus Python (un processus qui exécute l'interpréteur Python) doit être redémarré, needrestart extrait la variable d'environnement PYTHONPATH du fichier /proc/pid/environ de ce processus (à la ligne 193), définit cette variable d'environnement si elle existe (à la ligne 196), et exécute Python ("$ptable->{exec}" à la ligne 203) avec un argument "-" pour lire un court script codé en dur depuis l'entrée standard (à la ligne 204) :
Malheureusement, si un processus Python appartient à un attaquant local, needrestart exécute Python (à la ligne 203) avec une variable d'environnement PYTHONPATH contrôlée par l'attaquant, ce qui permet à l'attaquant d'exécuter du code arbitraire en tant que root (même si le script Python codé en dur de needrestart à la ligne 204 n'est pas du tout contrôlé par l'attaquant). C'est CVE-2024-48990.