Une nouvelle vulnérabilité Linux dangereuse se cache dans les distributions non corrigées. Appelé Dirty Pipe et suivi en tant que CVE-2022-0847, la vulnérabilité est située dans le noyau (depuis la version 5.8), créant la possibilité pour les acteurs de la menace d'écraser des données arbitraires dans n'importe quel fichier lu en ligne.
Cela pourrait alors permettre une reprise complète des systèmes exposés. Le chercheur Max Kellermann dit que Dirty Pipe est similaire à le défaut de Dirty Cow, divulgué dans 2016, mais plus facile à exploiter. CVE-2016-5195, également connu sous le nom de Dirty Cow et Kernel Local Privilege Escalation, a été trouvé dans toutes les distributions Linux publiées au cours des neuf dernières années, Jusqu'à 2016.
Comment était le tuyau sale (CVE-2022-0847) Découvert?
Voici comment Max Kellermann raconte l'histoire:
Tout a commencé il y a un an avec un ticket d'assistance concernant des fichiers corrompus. Un client s'est plaint que les journaux d'accès qu'il avait téléchargés ne pouvaient pas être décompressés. Et en effet, il y avait un fichier journal corrompu sur l'un des serveurs de journaux; il pourrait être décompressé, mais gzip a signalé une erreur CRC. Je ne pouvais pas expliquer pourquoi il était corrompu, mais j'ai supposé que le processus de division nocturne s'était écrasé et avait laissé un fichier corrompu derrière. J'ai corrigé manuellement le CRC du fichier, fermé le billet, et j'ai vite oublié le problème.
La situation a continué à se reproduire encore et encore. Chaque fois que c'est arrivé, le contenu du fichier semble correct, avec seulement le CRC à la fin du fichier erroné. Avoir plusieurs fichiers corrompus à portée de main a permis au chercheur d'analyser plus en profondeur, découvrant ainsi un schéma surprenant de corruption.
Finalement, il a découvert une faille "dans la façon dont les 'drapeaux’ membre de la nouvelle structure de tampon de canal manquait d'initialisation correcte dans les fonctions copy_page_to_iter_pipe et push_pipe dans le noyau Linux et pouvait donc contenir des valeurs obsolètes,” comme résumé par les chercheurs de Red Hat dans un avis séparé.
Par conséquent, un utilisateur local non privilégié pourrait exploiter la faille pour écrire dans des pages du cache de pages sauvegardées par des fichiers en lecture seule, création d'une condition d'élévation de privilèges. Le nom, Tuyau sale, provient du pipeline, qui, dans les systèmes d'exploitation informatiques de type Unix, est un mécanisme de communication inter-processus via la transmission de messages. Dans ce sens, un pipeline est un ensemble de processus enchaînés par leurs flux standards, de sorte que le texte de sortie de chaque processus (sortie standard) est passé directement en entrée (standard) au suivant, selon Wikipedia. https://en.wikipedia.org/wiki/Pipeline_(Unix)
Comment exploiter la vulnérabilité du tuyau sale?
Kellermann dit que l'exploitation de la faille CVE-2022-0847 nécessite les étapes suivantes:
1.Créer un tuyau.
2.Remplir le tuyau avec des données arbitraires (pour définir l'indicateur PIPE_BUF_FLAG_CAN_MERGE dans toutes les entrées de l'anneau).
3.Vidanger le tuyau (laissant le drapeau défini dans toutes les instances de struct pipe_buffer sur la struct pipe_inode_inforing).
4.Épisser les données du fichier cible (ouvert avec O_RDONLY) dans le tuyau juste avant le décalage cible.
5.Écrire des données arbitraires dans le tube; ces données écraseront la page du fichier mis en cache au lieu de créer une nouvelle structure anonyme pipe_buffer car PIPE_BUF_FLAG_CAN_MERGE est défini.
Cette exploitation fonctionne également avec des fichiers immuables sur les instantanés btrfs en lecture seule et sur les montages en lecture seule (y compris les supports de CD-ROM). "C'est parce que le cache de la page est toujours accessible en écriture (par le noyau), et écrire dans un tube ne vérifie jamais les autorisations,” Kellermann a ajouté.
Le chercheur a aussi créé et partagé son code de preuve de concept.
La vulnérabilité a déjà été corrigée dans les versions Linux 5.16.11, 5.15.25, et 5.10.102. Google a également libéré correctifs pour le noyau Android en février 24, 2022.
Il est à noter qu'hier, Mars 7, nous avons écrit sur un autre problème grave du noyau Linux, qui aurait pu être abusé pour s'échapper d'un conteneur afin d'exécuter des commandes arbitraires sur l'hôte. La vulnérabilité est suivie comme CVE-2022-0492, et a été détaillé par Palo Alto Unit 42 Chercheurs des réseaux.