La dangereuse faille d'escalade des privilèges Linux surnommée Dirty Pipe qui a été récemment révélée pourrait également avoir un impact sur les applications et les systèmes qui utilisent la conteneurisation via des outils tels que Docker, ont prévenu des chercheurs. Cela fait suite à une autre de même nature corrigée la semaine dernière pouvant aussi mettre les conteneurs à risque. Dirty Pipe « pourrait accorder à un attaquant de modifier efficacement les conteneurs qui s'exécutent sur une image partagée, ou de compromettre une image sur un hôte afin que les nouveaux conteneurs reçoivent des fichiers modifiés », a déclaré le chercheur Rory McCune de la société de sécurité cloud Aqua Security dans un billet de blog.

L'origine de Dirty Pipe

La vulnérabilité Dirty Pipe, identifiée comme CVE-2022-0847, est située dans le pipeline de messagerie ou le canal du noyau Linux. Il s'agit d'un mécanisme de communication inter-processus par lequel l'un d'eux peut envoyer des données à un autre. Un de ces derniers peut alors ouvrir un canal et y écrire des données, que le noyau stockera dans une mémoire tampon, puis attendra qu'un processus différent le lise à partir de là.

Max Kellermann, un développeur d'une société de logiciels appelée CM4all, a découvert la faille en enquêtant sur des rapports de corruption de fichiers provenant d'utilisateurs d'un serveur HTTP qu'il a développé. Après avoir éliminé tous les cas possibles dans son propre logiciel, l'enquête l'a conduit au noyau Linux où il a trouvé un commit inclus dans la version 5.8 du noyau qui a involontairement modifié le comportement du mécanisme de canal de communication inter-processus.

Il s'avère que ce problème peut être exploité de manière contrôlée pour injecter des données arbitraires et écrire ou modifier des fichiers qui ne devraient pas être accessibles à l'utilisateur ouvrant le canal, tels que des fichiers en lecture seule. « Quand j'ai réalisé quel était le vrai problème, j'ai pu en découvrir d'avantage : il est possible d'écraser le cache de la page même en l'absence d'écritures, sans contraintes de temps et avec des positions de données (presque) arbitraires », a déclaré Max Kellermann dans une note. Ce dernier a publié un PoC d'exploit sur la façon dont un fichier en lecture seule peut être écrasé par ce bug, qui a un impact similaire à une autre vulnérabilité découverte en 2016 dans le mécanisme Linux de copie sur écriture et surnommée Dirty COW. D'autres chercheurs ont poussé l'exploit plus loin et ont démontré comment il peut facilement être utilisé pour modifier des fichiers protégés et obtenir des droits root, le privilège le plus élevé sur les systèmes Linux.

La faille affecte tous les systèmes basés sur Linux qui utilisent une version du noyau plus récente que la 5.8, y compris Android. Toutes les distributions et Google ont publié des correctifs, qui doivent être installés dès que possible. La vulnérabilité est classée comme étant de gravité élevée, mais peut être particulièrement dangereuse sur des systèmes tels que les serveurs d'hébergement Web partagés où de nombreux clients disposent de comptes à faibles privilèges et d'un accès au shell.

Les containers déjà sous pression

Les conteneurs Linux sont puissants et permettent d'isoler les applications du système hôte sans utiliser la virtualisation basée sur l'hyperviseur. L'une des principales caractéristiques de ces systèmes de conteneurs est l'utilisation d'une image de base en lecture seule (système de fichiers) pour faire tourner plusieurs conteneurs qui utilisent ensuite des systèmes de fichiers superposés pour stocker toutes les modifications apportées à ces conteneurs particuliers. L'image originale qui est la base de tous les conteneurs doit rester intacte.

Selon Rory McCune, l'exploit Dirty Pipe donne aux attaquants la capacité de violer cette intégrité en apportant des modifications à l'image de base depuis l'intérieur d'un conteneur. Cela aura un impact sur tous les autres conteneurs démarrés à partir de la même image. « Cet exploit peut également affecter les conteneurs existants », fait savoir le chercheur d'Aqua Security. « Par exemple, si vous aviez un hôte avec 10 conteneurs nginx utilisant une image partagée, et que l'attaquant modifie le fichier nginx.conf dans l'un, il modifiera instantanément les fichiers dans les autres aussi, tant qu'ils utilisent toujours le fichier à partir de l'image sous-jacente ». De plus, les systèmes de conteneurs permettent le montage de volumes de système de fichiers à partir du système hôte en lecture seule. En exploitant Dirty Pipe, les attaquants ayant accès à un conteneur auraient la possibilité de modifier les données de ces montages en lecture seule.

Une autre vulnérabilité de privilège corrigée la semaine dernière, identifiée en tant que CVE-2022-0492, affecte les groupes de contrôle (cgroups), un élément fondamental des conteneurs. L'exploitation de cette vulnérabilité peut conduire à une fuite de conteneur sur des systèmes qui n'utilisent pas de renforcement de sécurité supplémentaire comme AppArmor, SELinux ou Seccomp. « Alors que Docker activera par défaut AppArmor et seccomp, Kubernetes a désactivé le profil seccomp par défaut », a par ailleurs souligné Rory McCune dans une analyse distincte. « Ainsi, pour Kubernetes, cela doit être réactivé dans chaque charge de travail ou au niveau du cluster à l'aide de contrôleurs d'admission mutants tels que OPA Gatekeeper ou Kyverno ».