La vulnérabilité a été révélée par le chercheur en sécurité Max Kellerman. Proprement appelée CVE-2022-0847, Dirty Pipe est similaire à la vulnérabilité Dirty COW de 2016 qui ciblait le mécanisme de copie sur écriture (COW) dans le sous-système mémoire du noyau Linux. Elle transformait une cartographie en lecture seule en une cartographie en écriture et pouvait être combinée avec d'autres exploits pour obtenir un accès root. À titre de rappel, en 2016, des chercheurs ont démontré comment exploiter Dirty COW pour débrider (rooter - effectuer une élévation des privilèges) n'importe quel téléphone Android, quelle que soit la version de l'OS mobile.
Onze mois plus tard, les chercheurs ont déniché 1 200 applications Android sur des marchés tiers qui exploitaient malicieusement la faille pour y parvenir. Dirty Pipe, en revanche, est plus facile à exploiter. Des preuves de concept ont été fournies par plusieurs personnes telles que celle du développeur du noyau Binni Shah, rapidement concoctées et publiées sur Twitter. De son côté, le chercheur en sécurité Phith0n a amélioré le processus pour laisser le compte root sans mot de passe. Il faut noter que le nom "Dirty Pipe" est censé à la fois signaler les similitudes avec Dirty COW et fournir des indices sur les origines de la nouvelle vulnérabilité.
"Pipe" fait référence à un pipeline, un mécanisme Linux permettant à un processus OS d'envoyer des données à un autre processus. C'est un outil de communication interprocessus unidirectionnel, dont la première écriture lui alloue une page (4 ko) de mémoire. Si vous utilisez "splice()" pour ajouter des données d'un fichier au pipe, elles sont écrites dans un cache de page, et de là, vous pouvez écraser le cache en écrivant de nouvelles données, correctement préparées, dans le pipe. Dans Linux, "dirty" (sale) signifie qu'une page est en attente d'une écriture sur le disque, et le cache des pages n'écrit pas sur le disque si une page n'est pas sale.
L'écrasement de ses données ne rend pas une page sale, donc elle reste dans le cache mémoire, et vos données d'exploitation correctement préparées peuvent y être envoyées. L'écriture dans un pipe ne vérifie pas les permissions, donc n'importe qui peut le faire, permettant potentiellement une escalade de privilèges qui disparaît au redémarrage, car elle n'a jamais été écrite sur le disque. Kellerman - qui travaille pour le constructeur de sites Web CM4all, une filiale d'une société appelée Ionos - a découvert la vulnérabilité après été confronté à une série de fichiers corrompus qui apparaissaient constamment sur la machine Linux d'un client.
Après des mois d'analyse, le chercheur a finalement découvert que les fichiers corrompus du client étaient le résultat d'un bogue dans le noyau Linux. Il a trouvé le moyen d'exploiter Dirty Pipe pour permettre à toute personne possédant un compte - y compris les comptes "nobody" les moins privilégiés - d'ajouter une clé SSH au compte de l'utilisateur root. Grâce à cette clé, l'attaquant peut accéder à distance au serveur avec une fenêtre SSH dotée de tous les privilèges de l'utilisateur root. D'autres chercheurs ont rapidement montré que la création non autorisée d'une clé SSH n'était qu'une des nombreuses actions malveillantes possibles.
Par exemple, Dirty Pipe peut être utilisé pour détourner un binaire SUID pour créer un Shell root, tandis que des utilisateurs non autorisés peuvent également l'exploiter d'écraser des données dans des fichiers en lecture seule. Parmi les autres actions malveillantes permises par Dirty Pipe, citons la création d'une tâche cron (un outil permettant de planifier des taches régulières sur les systèmes de type Unix) qui s'exécute comme une porte dérobée, l'ajout d'un nouveau compte utilisateur dans /etc/passwd + /etc/shadow (donnant au nouveau compte les privilèges root), ou la modification d'un script ou d'un binaire utilisé par un service privilégié.
« C'est à peu près aussi grave que possible pour une vulnérabilité locale du noyau. Tout comme Dirty Cow, il n'y a pratiquement aucun moyen de l'atténuer, et elle implique des fonctionnalités centrales du noyau Linux », a déclaré Brad Spengler, président d'Open Source Security. La vulnérabilité est apparue pour la première fois dans la version 5.8 du noyau Linux, qui a été publiée en août 2020. Kellerman a envoyé un rapport de bogue (et un correctif) à l'équipe de sécurité du noyau Linux en février, et les correctifs ont été publiés trois jours plus tard. La vulnérabilité a été corrigée dans Linux 5.16.11, 5.15.25, et 5.10.102.
Dirty Pipe affecte également toute version d'Android basée sur l'une des versions vulnérables du noyau Linux. Puisqu'Android est si fragmenté, les modèles d'appareils affectés ne peuvent pas être suivis de manière uniforme. La dernière version d'Android pour le Pixel 6 et le Samsung Galaxy S22, par exemple, est 5.10.43, ce qui signifie que les appareils sont vulnérables. Un Pixel 4 sous Android 12, quant à lui, fonctionne avec la version 4.14, qui n'est pas affectée. Les utilisateurs d'Android peuvent vérifier quelle version du noyau leur appareil utilise en allant dans "Paramètres > À propos du téléphone > Version Android".
Google a ajouté le correctif au noyau Android quelques jours après le rapport de Kellerman. « La vulnérabilité Dirty Pipe est extrêmement grave dans la mesure où elle permet à un attaquant d'écraser - temporairement ou définitivement - des fichiers sur le système qu'il ne devrait pas être en mesure de modifier. Les attaquants peuvent utiliser cela pour modifier le comportement des processus privilégiés, obtenant effectivement la capacité d'exécuter du code arbitraire avec des privilèges système étendus », a écrit Christoph Hebeisen, responsable de la recherche en sécurité chez le fournisseur de sécurité mobile Lookout.
Selon les experts, un facteur atténuant est que la version du noyau qui a introduit la vulnérabilité, 5.8, est relativement récente. De nombreux serveurs de production n'utilisent pas la version 5.8. Par ailleurs, l'année 2022 a déjà connu une autre vulnérabilité Linux de haute gravité. Il s'agit de PwnKit, un bogue d'élévation de privilèges qui a été découvert en janvier après s'être caché dans le noyau Linux pendant 12 ans. Elle aussi est triviale à exploiter et ouvre la porte à de nombreuses formes de malveillance.
Toutefois, ils s'accordent à dire que la facilité d'exploitation de Dirty Pipe couplée aux choses quasi illimitées que les pirates peuvent faire avec elle en font la vulnérabilité d'élévation de privilèges la plus critique à frapper Linux depuis la Dirty Cow de 2016. « Étant donné qu'il y a déjà des exploits armés flottant sur Twitter, il est déjà trop tard pour les personnes qui avaient des utilisateurs non fiables existants sur leur système. Toute personne ayant une version du noyau affectée (>= 5.8) devrait appliquer le correctif dès que possible », recommande Spengler.
Source : Max Kellermann
Et vous ?
Quel est votre avis sur le sujet ?
Que pensez-vous de la variété des actions malveillantes que Dirty Pipe permet de mener ?
Pensez-vous avoir été victime de l'une des actions malveillantes que permet Dirty Pipe ? Si oui, partagez votre expérience.
Voir aussi
Une vulnérabilité du kernel Linux expose la mémoire et provoque des fuites de données, alors que des discussions se poursuivent sur la prise en charge de Rust pour le développement du noyau Linux
Des chercheurs ont secrètement tenté d'ajouter des vulnérabilités au noyau Linux et ont fini par être bannis
Il est possible de rooter des téléphones Android en se basant sur la faille Dirty Cow qui a affecté Linux pendant 9 ans
Un bogue vieux de 12 ans dans polkit permet d'obtenir des privilèges « root » sur les principales distributions GNU/Linux, Ubuntu et Red Hat ont déjà publié des correctifs