Vulnérabilité VFS du noyau Linux permettant l'élévation des privilèges

Une vulnérabilité (CVE-2022-0185) a été identifiée dans l'API Filesystem Context fournie par le noyau Linux, qui permet à un utilisateur local d'obtenir les privilèges root sur le système. Le chercheur qui a identifié le problème a publié une démonstration d'un exploit qui permet d'exécuter du code en tant que root sur Ubuntu 20.04 dans la configuration par défaut. Le code d'exploitation devrait être publié sur GitHub dans la semaine suivant la publication par les distributions d'une mise à jour corrigeant la vulnérabilité.

La vulnérabilité existe dans la fonction Legacy_parse_param() dans VFS et est causée par un échec de vérification correcte de la taille maximale des paramètres fournis sur les systèmes de fichiers qui ne prennent pas en charge l'API de contexte du système de fichiers. Passer un paramètre trop grand peut provoquer un débordement de la variable entière utilisée pour calculer la taille des données à écrire - le code a un contrôle de débordement de tampon "if (len > PAGE_SIZE - 2 - size)", ce qui ne le fait pas fonctionne si la valeur de taille est supérieure à 4094. pour un dépassement d'entier à travers la limite inférieure (sous-débordement d'entier, lors de la conversion de 4096 - 2 - 4095 en entier non signé, le résultat est 2147483648).

Cette erreur permet, lors de l'accès à une image du système de fichiers spécialement conçue, de provoquer un débordement de tampon et d'écraser les données du noyau en suivant la zone mémoire allouée. Pour exploiter la vulnérabilité, vous devez disposer des droits CAP_SYS_ADMIN, c'est-à-dire pouvoirs d'administrateur. Le problème est qu'un utilisateur non privilégié peut obtenir de telles autorisations dans un conteneur isolé si le système prend en charge les espaces de noms utilisateur. Par exemple, les espaces de noms utilisateur sont activés par défaut sur Ubuntu et Fedora, mais pas sur Debian et RHEL (sauf si des plates-formes d'isolation de conteneurs sont utilisées).

Le problème est apparu depuis le noyau Linux 5.1 et a été corrigé dans les mises à jour d'hier 5.16.2, 5.15.16, 5.10.93, 5.4.173. Des mises à jour de packages corrigeant la vulnérabilité ont déjà été publiées pour RHEL, Debian, Fedora et Ubuntu. Le correctif n'est pas encore disponible sur Arch Linux, Gentoo, SUSE et openSUSE. Comme solution de contournement de sécurité pour les systèmes qui n'utilisent pas l'isolation des conteneurs, vous pouvez définir la valeur sysctl "user.max_user_namespaces" sur 0 : echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p /etc/sysctl.d/userns.conf

Source: opennet.ru

Ajouter un commentaire