
Cinq vulnérabilités d’élévation de privilèges locaux (LPE) ont été découvertes dans l’utilitaire needrestart utilisé par Ubuntu Linux, qui a été introduit il y a plus de 10 ans dans la version 21.04.
Les failles ont été découvertes par Qualys et sont suivies sous les noms CVE-2024-48990, CVE-2024-48991, CVE-2024-48992, CVE-2024-10224 et CVE-2024-11003. Ils ont été introduits dans needrestart version 0.8, publiée en avril 2014, et corrigés seulement hier, inversion 3.8.
Needrestart est un utilitaire couramment utilisé sous Linux, y compris sur Ubuntu Server, pour identifier les services qui nécessitent un redémarrage après les mises à jour des packages, en veillant à ce que ces services exécutent les versions les plus récentes des bibliothèques partagées.
Résumé des défauts de LPE
Les cinq failles découvertes par Qualys permettent aux attaquants disposant d’un accès local à un système Linux vulnérable d’augmenter leurs privilèges au niveau root sans interaction de l’utilisateur.
Des informations complètes sur les failles ont été mises à disposition dans un fichier texte séparé, mais un résumé peut être trouvé ci-dessous:
- CVE-2024-48990: Needrestart exécute l’interpréteur Python avec une variable d’environnement PYTHONPATH extraite des processus en cours d’exécution. Si un attaquant local contrôle cette variable, il peut exécuter du code arbitraire en tant que root lors de l’initialisation de Python en installant une bibliothèque partagée malveillante.
- CVE-2024-48992: L’interpréteur Ruby utilisé par needrestart est vulnérable lors du traitement d’une variable d’environnement RUBYLIB contrôlée par un attaquant. Cela permet aux attaquants locaux d’exécuter du code Ruby arbitraire en tant que root en injectant des bibliothèques malveillantes dans le processus.
- CVE-2024-48991: Une condition de concurrence dans needrestart permet à un attaquant local de remplacer le binaire de l’interpréteur Python en cours de validation par un exécutable malveillant. En chronométrant soigneusement le remplacement, ils peuvent inciter needrestart à exécuter leur code en tant que root.
- CVE-2024-10224: Le module ScanDeps de Perl, utilisé par needrestart, gère incorrectement les noms de fichiers fournis par l’attaquant. Un attaquant peut créer des noms de fichiers ressemblant à des commandes shell (par exemple, commande / | pour exécuter des commandes arbitraires en tant que root lorsque le fichier est ouvert.
- CVE-2024-11003: La dépendance de Needrestart sur le module Scandeps de Perl l’expose à des vulnérabilités dans ScanDeps lui – même, où l’utilisation non sécurisée des fonctions eval() peut conduire à l’exécution de code arbitraire lors du traitement des entrées contrôlées par l’attaquant.
Il est important de noter que, pour exploiter ces failles, un attaquant devrait accéder localement au système d’exploitation via un logiciel malveillant ou un compte compromis, ce qui atténue quelque peu le risque.
Cependant, les attaquants ont exploité des vulnérabilités similaires d’élévation de privilèges Linux dans le passé pour s’enraciner, y compris les Loony Tunables et une exploitant un bogue nf_tables, donc cette nouvelle faille ne doit pas être rejetée simplement parce qu’elle nécessite un accès local.
Avec l’utilisation généralisée de needrestart et la très longue période pendant laquelle il a été vulnérable, les failles ci-dessus pourraient créer des opportunités d’élévation de privilèges sur les systèmes critiques.
Outre la mise à niveau vers la version 3.8 ou ultérieure, qui inclut des correctifs pour toutes les vulnérabilités identifiées, il est recommandé de modifier le needrestart.fichier de configuration pour désactiver la fonction d’analyse de l’interpréteur, ce qui empêche l’exploitation des vulnérabilités.
# Disable interpreter scanners.
$nrconf{interpscan} = 0;
Cela devrait empêcher needrest de commencer à exécuter des interpréteurs avec des variables d’environnement potentiellement contrôlées par l’attaquant.