Le noyau Linux présente plusieurs vulnérabilités critiques permettant à un utilisateur local d'élever ses privilèges dans le système. Des prototypes exploitables ont été préparés pour tous les problèmes examinés.
- La vulnérabilité (CVE-2022-0995) dans le sous-système de suivi des événements watch_queue, entraînant l'écriture de données dans des zones de mémoire du noyau en dehors du tampon alloué. Une attaque peut être effectuée par tout utilisateur non privilégié et conduire à l'exécution de son propre code avec des droits de noyau. La vulnérabilité est présente dans la fonction watch_queue_set_size() et est liée à la tentative de nettoyage de tous les pointeurs de la liste, même si aucune mémoire n'a été allouée pour eux. Le problème se manifeste lors de la compilation du noyau avec l'option « CONFIG_WATCH_QUEUE=y », qui est utilisée dans la plupart des distributions Linux.
La vulnérabilité a été corrigée dans un changement ajouté au noyau le 11 mars. On peut suivre la publication des mises à jour de paquets dans les distributions sur ces pages : Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Un prototype exploitable est déjà disponible publiquement et permet d'obtenir un accès root lors de l'exécution sous Ubuntu 21.10 avec le noyau 5.13.0-37.

- La vulnérabilité (CVE-2022-27666) dans les modules du noyau esp4 et esp6 avec mise en œuvre des transformations ESP (Encapsulating Security Payload) pour IPsec, appliquées lors de l'utilisation d'IPv4 et IPv6. La vulnérabilité permet à un utilisateur local avec des privilèges normaux d'écrire sur des objets dans la mémoire du noyau et d'élever ses privilèges dans le système. Le problème est causé par l'absence de vérification entre la taille de mémoire allouée et les données réellement reçues alors que la taille maximale du message pouvait dépasser la taille maximale de mémoire allouée pour la structure skb_page_frag_refill.
La vulnérabilité a été corrigée dans le noyau le 7 mars (correctif dans 5.17, 5.16.15, etc.). On peut suivre la publication des mises à jour de paquets dans les distributions sur ces pages : Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Un prototype exploitable, permettant à un utilisateur ordinaire d'obtenir un accès root dans Ubuntu Desktop 21.10 avec la configuration par défaut, est déjà hébergé sur GitHub. Il est affirmé qu'avec quelques modifications mineures, l'exploit sera également fonctionnel dans Fedora et Debian. Notamment, cet exploit a été initialement préparé pour le concours pwn2own 2022, mais les développeurs du noyau ont identifié et corrigé le bug associé, c'est pourquoi il a été décidé de révéler les détails de la vulnérabilité.
- Deux vulnérabilités (CVE-2022-1015, CVE-2022-1016) dans le sous-système netfilter du module nf_tables, qui gère le filtrage de paquets nftables. Le premier problème permet à un utilisateur local non privilégié d'écrire en dehors du tampon alloué dans la pile. Le débordement se produit lors du traitement d'expressions nftables formatées d'une certaine manière, examinées lors de la vérification des index fournis par l'utilisateur ayant accès aux règles nftables.
La vulnérabilité est due au fait que les développeurs pensaient que la valeur « enum nft_registers reg » était d'un octet, tandis qu'avec certaines optimisations activées, le compilateur peut utiliser une valeur de 32 bits selon la spécification C89. En raison de cette particularité, la taille utilisée pour vérification et allocation de mémoire ne correspond pas à la taille réelle des données dans la structure, entraînant un chevauchement de la queue de la structure sur des pointeurs dans la pile.
Le problème peut être exploité pour exécuter son propre code au niveau du noyau, mais une attaque réussie nécessite un accès à nftables, qui peut être obtenu dans un espace de noms de réseau distinct (network namespaces) avec des droits CLONE_NEWUSER ou CLONE_NEWNET (par exemple, en ayant la possibilité de lancer un conteneur isolé). La vulnérabilité est également étroitement liée aux optimisations appliquées par le compilateur, qui sont activées lors de la compilation en mode « CONFIG_CC_OPTIMIZE_FOR_PERFORMANCE=y ». L'exploitation de la vulnérabilité est possible à partir du noyau Linux 5.12.
La deuxième vulnérabilité dans netfilter est causée par l'accès à une zone de mémoire déjà libérée (use-after-free) dans le gestionnaire nft_do_chain et peut entraîner une fuite de zones de mémoire non initialisées du noyau, qui peuvent être lues par des manipulations d'expressions nftables et utilisées, par exemple, pour déterminer les adresses des pointeurs lors du développement d'exploits pour d'autres vulnérabilités. L'exploitation de la vulnérabilité est possible à partir du noyau Linux 5.13.
Les vulnérabilités ont été corrigées dans les mises à jour du noyau 5.17.1, 5.16.18, 5.15.32, 5.10.109, 5.4.188, 4.19.237, 4.14.274 et 4.9.309 publiées aujourd'hui. Vous pouvez suivre les publications de mise à jour des paquets dans les distributions sur les pages suivantes : Debian, SUSE, Ubuntu, RHEL, Fedora, Gentoo, Arch Linux. Le chercheur ayant découvert ces problèmes a déclaré préparer des exploits fonctionnels pour les deux vulnérabilités, qui devraient être publiés dans quelques jours, après que les distributions auront publié des mises à jour de paquets avec le noyau.
Source : opennet.ru

