Les vulnérabilités Dirty Frag, modifiant le cache de pages pour obtenir les droits root sur toutes les distributions Linux

Deux vulnérabilités ont été identifiées dans le noyau Linux, qui sont essentiellement similaires à la vulnérabilité Copy Fail révélée il y a quelques jours, mais qui se manifestent dans d'autres sous-systèmes — xfrm-ESP et RxRPC. Ces séries de vulnérabilités ont été nommées Dirty Frag (il y a aussi une mention de Copy Fail 2). Les vulnérabilités permettent à un utilisateur non privilégié d'obtenir des droits root en réécrivant les données de processus dans le cache de pages. Un exploit est disponible et fonctionne dans toutes les distributions Linux actuelles. L'information sur la vulnérabilité a été divulguée avant la publication des correctifs, mais il existe une méthode de contournement pour bloquer le problème.

Dirty Frag couvre deux vulnérabilités distinctes : la première dans le module xfrm-ESP, utilisé pour accélérer les opérations de chiffrement dans IPsec avec le protocole ESP (Encapsulating Security Payload), et la deuxième dans le pilote RxRPC, qui implémente la famille de sockets AF_RXRPC et le protocole RPC du même nom fonctionnant sur UDP. Chacune de ces vulnérabilités, isolément, permet d'obtenir des droits root. La vulnérabilité dans xfrm-ESP se manifeste dans le noyau Linux depuis janvier 2017, tandis que la vulnérabilité dans RxRPC est présente depuis juin 2023. Les deux problèmes sont causés par des optimisations permettant une écriture directe dans le cache de pages.

Pour exploiter la vulnérabilité dans xfrm-ESP, l'utilisateur doit avoir des droits pour créer des espaces de noms, et pour exploiter la vulnérabilité dans RxRPC, il doit être en mesure de charger le module noyau rxrpc.ko. Par exemple, dans Ubuntu, les règles d'AppArmor interdisent à un utilisateur non privilégié de créer des espaces de noms, mais le module rxrpc.ko est chargé par défaut. Dans certaines distributions, le module rxrpc.ko est absent, mais la création d'espaces de noms n'est pas bloquée. Le chercheur ayant identifié le problème a préparé un exploit combiné capable d'attaquer le système via les deux vulnérabilités, ce qui permet d'exploiter le problème dans toutes les grandes distributions. L'exploitation a été confirmée dans Ubuntu 24.04.4 avec le noyau 6.17.0-23, RHEL 10.1 avec le noyau 6.12.0-124.49.1, openSUSE Tumbleweed avec le noyau 7.0.2-1, CentOS Stream 10 avec le noyau 6.12.0-224, AlmaLinux 10 avec le noyau 6.12.0-124.52.3 et Fedora 44 avec le noyau 6.19.14-300.

Tout comme dans le cas de la vulnérabilité Copy Fail, les problèmes rencontrés dans xfrm-ESP et RxRPC sont dus à l'exécution d'une décryption des données sur place, en utilisant la fonction splice(), qui transfère des données entre des descripteurs de fichiers et des canaux (pipe) sans duplication, en passant par des références aux éléments dans le cache de pages. Les décalages pour l'opération d'écriture étaient calculés sans vérifications appropriées, tenant compte de l'utilisation de référence directe sur les éléments dans le cache de pages, ce qui permettait, par l'envoi de requêtes spécialement conçues, de réécrire 4 octets à un décalage choisi et de modifier le contenu dans le cache de pages de n'importe quel fichier.

Toutes les opérations de lecture de fichiers renvoient d'abord le contenu du cache de pages. En cas de modification des données dans le cache de pages, les opérations de lecture de fichiers entraîneront le retour d'informations qui ne sont pas réellement stockées sur le périphérique, mais de données substituées. L'exploitation de la vulnérabilité consiste à modifier le cache de pages pour un fichier exécutable avec le drapeau suid root. Par exemple, pour obtenir des privilèges root, on peut lire le fichier exécutable /usr/bin/su pour le mettre dans le cache de pages, après quoi il est possible d'insérer son code dans le contenu de ce fichier chargé dans le cache de pages. L'exécution subséquente de l'outil « su » amènera à charger en mémoire non pas le fichier exécutable original depuis le périphérique, mais une version modifiée venant du cache de pages.

La divulgation d'informations sur les vulnérabilités et la publication coordonnée des mises à jour corrigeant les problèmes étaient prévues pour le 12 mai, mais en raison d'une fuite d'informations, les détails sur la vulnérabilité ont dû être publiés avant la publication des correctifs. Fin avril, des correctifs pour rxrpc, ipsec et xfrm ont été publiés sur la liste de diffusion publique netdev, sans mention qu'ils étaient liés à la correction d'une vulnérabilité. Le 5 mai, le mainteneur du sous-système IPsec a intégré dans le dépôt git netdev un changement avec un correctif proposé dans le module xfrm-esp, dont la description répétait en grande partie celle du problème ayant conduit à la vulnérabilité Copy Fail dans le module algif_aead. L'un des chercheurs en sécurité s'est intéressé à ce correctif, a réussi à créer un exploit fonctionnel et l'a publié, sans avoir connaissance de l'embargo sur les détails du problème avant le 12 mai.

Des mises à jour correctives pour le noyau Linux et les paquets associés dans les distributions ne sont pas encore publiées, mais des correctifs problématiques sont disponibles — xfrm-esp et rxrpc. Les identifiants CVE n'ont pas été attribués, ce qui rend le suivi des mises à jour des paquets dans les distributions plus difficile. Comme solution de contournement pour la protection, vous pouvez bloquer le chargement des modules du noyau esp4, esp6 et rxrpc : sh -c «printf 'install esp4 /bin/false\ninstall esp6 /bin/false\ninstall rxrpc /bin/false\n' > /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true»

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster