Dirty Pipe : une vulnérabilité qui permet d'écraser les données

Récemment, la nouvelle a annoncé que une vulnérabilité a été identifiée dans le noyau Linux et qui est déjà catalogué sous CVE-2022-0847 et qu'ils ont nommé comme "Tuyau sale".

Cette vulnérabilité baptisée "Dirty Pipe"permet d'écraser le contenu du cache de la page pour n'importe quel fichier, y compris ceux définis en lecture seule, ouverts avec l'indicateur O_RDONLY ou situés sur des systèmes de fichiers montés en lecture seule.

Sur le plan pratique, la vulnérabilité pourrait être utilisé pour injecter du code dans des processus arbitraires ou des données corrompues dans des fichiers ouverts. Par exemple, vous pouvez modifier le contenu du fichier authorized_keys pour le processus sshd.

À propos du tuyau sale

Il est similaire à la vulnérabilité critique Dirty COW identifié en 2016 et Dirty Pipe est mentionné comme étant au même niveau que Dirty COW en termes de dangerosité, mais que celui-ci est beaucoup plus facile à utiliser.

Dirty Pipe a été identifié lors de l'analyse des plaintes concernant les dommages périodiques aux archives téléchargés sur le réseau sur un système qui télécharge des fichiers compressés à partir d'un serveur de journalisation (37 dommages en 3 mois sur un système chargé), qui ont été préparés à l'aide de l'opération splice() et de canaux sans nom.

Vulnérabilité se manifeste depuis la version 5.8 du noyau Linux, sorti en août 2020.

Vu d'une autre manière, nous pouvons dire qu'il est présent dans Debian 11 mais qu'il n'affecte pas le noyau de base dans Ubuntu 20.04 LTS, tandis que pour les noyaux RHEL 8.x et openSUSE/SUSE 15 qui sont à l'origine basés sur d'anciennes branches, mais c'est possible que le changement qui cause le problème leur a été transféré (il n'y a pas encore de données exactes).

La vulnérabilité est due au manque d'initialisation de la valeur "buf->flags" dans le code des fonctions copy_page_to_iter_pipe() et push_pipe(), malgré que la mémoire ne soit pas effacée lors de l'allocation de la structure, et avec certaines manipulations avec unnamed pipes, "buf->flags" peut contenir une valeur d'une autre opération. Avec cette fonctionnalité, un utilisateur local non privilégié peut obtenir l'apparition de la valeur PIPE_BUF_FLAG_CAN_MERGE dans l'indicateur, lui permettant d'écraser les données dans le cache de page simplement en écrivant de nouvelles données dans un tube sans nom spécialement préparé.

pour une attaque peut être fait, vous avez besoin d'un fichier cible qui doit être lisible et comme les droits d'accès ne sont pas vérifiés lors de l'écriture dans un tube, un remplacement peut être effectué sur le cache de pages, même pour les fichiers situés sur des partitions en lecture seule (par exemple, pour les fichiers c CD-ROM).

Avec cela, après avoir remplacé les informations dans le cache de la page, le processus, lors de la lecture des données du fichier, ne recevra pas les données réelles, mais celles remplacées.

Il est mentionné que l'opération Dirty Pipe se résume à créer un tube sans nom et à le remplir avec des données arbitraires pour obtenir le réglage de l'indicateur PIPE_BUF_FLAG_CAN_MERGE sur toutes les structures en anneau qui lui sont associées.

Les données sont ensuite lues à partir du tube, mais l'indicateur reste défini sur toutes les instances de la structure pipe_buffer dans les structures en anneau pipe_inode_info. Un appel à splice() est ensuite effectué pour lire les données du fichier de destination dans un canal sans nom, en commençant au décalage requis. Lors de l'écriture de données dans ce canal sans nom, l'indicateur PIPE_BUF_FLAG_CAN_MERGE écrasera les données dans le cache de page au lieu de créer une nouvelle instance de la structure pipe_buffer.

Enfin Si vous souhaitez en savoir plus, vous pouvez vérifier les détails dans la note originale dans le lien suivant.

Aussi, si vous êtes intéressé par pouvoir suivre ou connaître la publication des mises à jour des packages dans les principales distributions, vous pouvez le faire à partir de ces pages : DebianSUSEUbuntuRHELFedoraGentooArchLinux.

Il est mentionné que le correctif de vulnérabilité proposé est disponible dans les versions 5.16.11, 5.15.25 et 5.10.102 du noyau Linux et que le correctif est également inclus dans le noyau utilisé sur la plate-forme Android.


Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont marqués avec *

*

*

  1. Responsable des données : AB Internet Networks 2008 SL
  2. Finalité des données: Contrôle du SPAM, gestion des commentaires.
  3. Légitimation: votre consentement
  4. Communication des données: Les données ne seront pas communiquées à des tiers sauf obligation légale.
  5. Stockage des données: base de données hébergée par Occentus Networks (EU)
  6. Droits: à tout moment, vous pouvez limiter, récupérer et supprimer vos informations.