Une importante vulnérabilité Linux baptisée « Dirty Pipe » pourrait permettre même aux utilisateurs disposant des privilèges les plus limités d’effectuer des actions malveillantes.
Le chercheur Max Kellermann, d’Ionos, a révélé cette nouvelle vulnérabilité en début de semaine. Son nom rappelle celui de la vulnérabilité « Dirty Cow », découverte en 2016, qui permettait aux attaquants d’obtenir un accès root sur n’importe quel téléphone Android, quelle que soit la version du système d’exploitation, mais Dirty Pipe pourrait être encore plus facile à exploiter que sa prédécesseure.
Kellermann est parvenu à exploiter le bug du noyau Linux, qui permet à n’importe quel utilisateur, y compris ceux disposant des privilèges les plus limités comme le compte « nobody », d’effectuer des actions malveillantes, par exemple ajouter une clé SSH au compte de l’utilisateur root afin d’accéder à distance au serveur avec tous les privilèges.
À lire aussi : Les meilleurs outils de gestion des vulnérabilités
Qu’est-ce que le compte nobody sous Linux ?
Les systèmes Unix disposent traditionnellement d’un utilisateur dédié appelé nobody pour certaines opérations avec le NFS (Network File System).
Ce pseudo-utilisateur est le compte disposant des privilèges les plus limités ; il n’a aucun mot de passe et ne possède littéralement aucun fichier. En effet, le PoLP (principe du moindre privilège), principe fondamental de la sécurité zero trust, veut qu’un utilisateur ne puisse accéder qu’aux informations et aux ressources dont il a besoin.
Une vulnérabilité qui permet aux comptes disposant des privilèges les plus limités d’obtenir des privilèges root constitue un échec majeur pour un système d’exploitation aussi important que Linux.
Fonctionnement de Dirty Pipe
Le rapport Common Vulnerabilities and Exposures (CVE) consacré à la vulnérabilité, CVE-2022-0847, explique comment les attaquants peuvent tirer parti du bug. Le terme « Pipe » fait référence à des mécanismes internes du noyau Linux appelés « pipelines ».
Kellermann a découvert une variable non initialisée dans le code du noyau, qui pourrait permettre à un attaquant d’écraser le contenu de n’importe quel fichier présent dans le cache. Bien sûr, certaines conditions doivent être réunies, mais l’attaquant n’a pas besoin de permissions d’écriture : un accès en lecture suffit. Le bug affecte également les binaires système et les fichiers btrfs.
En effet, le noyau dispose d’un accès permanent, en lecture comme en écriture, aux pages du cache. Le noyau s’exécute toujours avec les privilèges maximaux : aucune vérification n’est donc effectuée à ce niveau. Il s’agit du système dans son essence même, avec un accès au matériel.
Le noyau utilise des indicateurs et des pipelines pour transmettre des données entre les processus. Kellermann a créé une preuve de concept (illustrée ci-dessous) pour l’équipe de sécurité du noyau Linux : il a créé un pipeline et l’a rempli de données arbitraires, ce qui a activé l’indicateur PIPE_BUF_FLAG_CAN_MERGE et a finalement permis d’écraser la page du fichier mise en cache.
Il a toutefois constaté certaines limites : l’écriture ne pouvait pas franchir une limite de page. Il était néanmoins possible de modifier des fichiers sans permissions d’écriture, et ces modifications pouvaient affecter tous les utilisateurs du système.
Dirty Pipe n’a pas besoin des privilèges d’un processus légitime pour écrire des données dans des fichiers, et aucune contrainte de temps ne s’applique.

Voir aussi : Les 10 meilleurs outils open source de test d’intrusion
Ce que les attaquants peuvent faire avec Dirty Pipe
Parce qu’il est plus facile à exploiter que Dirty Cow et qu’il permet d’élever les privilèges au niveau root, Dirty Pipe est une faille critique. Les pirates pourraient probablement l’utiliser pour effectuer d’autres opérations, comme modifier des bibliothèques courantes et exécuter du code arbitraire.
L’écrasement peut être temporaire ou permanent, et l’attaquant peut modifier les binaires d’un système qui sont censés être immuables. Toute application malveillante pourrait accroître considérablement ses capacités sans le consentement de l’utilisateur.
Cette vulnérabilité est idéale pour les mouvements latéraux, l’exécution de code arbitraire et la propagation de virus.
Une compromission d’aussi bas niveau est particulièrement intéressante pour les attaques zero-click. Près d’un an s’est écoulé entre le premier ticket d’assistance concernant une « simple » corruption de fichier et la divulgation publique finale :

Comment détecter et corriger la vulnérabilité Dirty Pipe
Ce bug critique a été corrigé sous Linux. La bonne nouvelle est que le bug a été introduit dans Linux 5.8, une version relativement récente au moment de la rédaction de cet article ; il est donc à espérer que moins de serveurs de production seront concernés.
Les utilisateurs de la version 5.8 doivent effectuer la mise à jour rapidement, et ceux qui utilisent une version plus récente doivent au moins disposer d’une version ultérieure5.16.11.
Google a corrigé Android fin février avec le nouveau code du noyau, mais les appareils Android, y compris les derniers Pixel (le bug a été démontré sur un Google Pixel 6) et les appareils Samsung (comme le Galaxy 2022), sont concernés. Comme l’écosystème Android est très fragmenté et comprend divers systèmes alternatifs fondés sur le même noyau Linux, de nombreux appareils pourraient être vulnérables.
Les utilisateurs d’Android sont vivement encouragés à vérifier la version de leur système d’exploitation dans Paramètres > À propos du téléphone > Version d’Android.
À lire ensuite : Les meilleurs logiciels de gestion des correctifs





