Hack CVE-2022-0847 sur le noyau Linux
by Haris
Une énième vulnérabilité critique affectant le noyau Linux a été découverte récemment, par un chercheur en sécurité. Cette vulnérabilité nommée “DirtyPipe” référencé “CVE-2022-0847”, presque similaire à “DirtyCow”, permet à un attaquant possédant des permissions de lecture, de compromettre l’intégrité du système.
La vulnérabilité Dirty Pipe , qui a été suivie sous le nom de CVE-2022-0847, est en quelque sorte similaire au méchant bogue populaire de Linux appelé “Dirty Cow”, mais est plus facile à exploiter. La vulnérabilité a été découverte par un chercheur en sécurité nommé Max Kellermann , de l’hébergement CM4all.
Lorsque Kellermann reçoit les tickets d’assistance concernant les fichiers corrompus de l’un de ses clients d’hébergement, il a commencé à résoudre ce problème. En examinant le problème, il a découvert qu’il y avait un fichier journal corrompu sur l’un des serveurs de journalisation, il pouvait ê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. J’ai corrigé le CRC du fichier manuellement, fermé le ticket et rapidement oublié le problème.” Kellermann a écrit sur blogpost.
Plus tard, il a trouvé plusieurs problèmes similaires sur leur serveur. A chaque fois, le contenu du fichier semblait correct, seul le CRC à la fin du fichier était erroné. Après avoir approfondi le problème, il a tiré une conclusion : il doit s’agir d’un bogue du noyau.
En examinant le code du noyau et quelques vérifications rapides, il a confirmé que le bogue réside dans les tuyaux du noyau qui affecte Linux 5.10 (Debian Bullseye) mais pas Linux 4.19 (Debian Buster).
Un tube est un outil de communication unidirectionnelle inter-processus. Une extrémité sert à y insérer des données, l’autre extrémité peut extraire ces données. Le noyau Linux implémente cela par un anneau de struct pipe_buffer, chacun faisant référence à une page. La première écriture dans un tube alloue une page (espace pour 4 Ko de données). Si l’écriture la plus récente ne remplit pas complètement la page, l’écriture suivante peut s’ajouter à cette page existante au lieu d’en allouer une nouvelle. C’est ainsi que fonctionnent les tampons de canal “anonymes” (anon_pipe_buf_ops).
Exploitation de la vulnérabilité de Dirty Pipe ( CVE-2022-0847)
Dans ses recherches, Kellermann a appris qu’il est possible d’écraser le cache de pages même en l’absence d’écrivains (écrivains utilisés pour la bissectrice), sans contraintes de temps, à des positions (presque) arbitraires avec des données arbitraires. Mais il y a quelques limitations qui sont :
- l’attaquant doit avoir les permissions de lecture (car il a besoin de splice() une page dans un tube)
- le décalage ne doit pas être sur une limite de page (car au moins un octet de cette page doit avoir été épissé dans le tube)
- l’écriture ne peut pas franchir une limite de page (car un nouveau tampon anonyme serait créé pour le reste)
- le fichier ne peut pas être redimensionné (car le tube a sa propre gestion du remplissage de page et n’indique pas au cache de page la quantité de données ajoutées)
- Créez un tuyau.
- Remplissez le tube avec des données arbitraires (pour définir l’indicateur PIPE_BUF_FLAG_CAN_MERGE dans toutes les entrées de l’anneau).
- Videz le tuyau (en laissant l’indicateur défini dans toutes les instances de struct pipe_buffer sur l’anneau de struct pipe_inode_info).
- Épisser les données du fichier cible (ouvert avec O_RDONLY) dans le tuyau juste avant le décalage cible.
- Écrivez 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.
Recommended Posts
Site WordPress piraté comment le réparer ?
21 mars 2022
Dark mode sur Google Chrome
27 mars 2021
Site WordPress piraté qui affiche de la publicté
5 janvier 2021