Vulnérabilités dans le sous-système eBPF du noyau Linux

Une vulnérabilité (CVE-2021-29154) a été identifiée dans le sous-système eBPF, qui permet d'exécuter des gestionnaires de traçage, d'analyse du fonctionnement des sous-systèmes et de gestion du trafic, exécutés à l'intérieur du noyau Linux dans une machine virtuelle spéciale avec JIT, qui permet un utilisateur local pour réaliser l'exécution de son code au niveau du noyau. Le problème apparaît jusqu'à la version 5.11.12 (incluse) et n'a pas encore été résolu dans les distributions (Debian, Ubuntu, RHEL, Fedora, SUSE, Arch). Le correctif est disponible sous forme de patch.

Selon les chercheurs qui ont identifié la vulnérabilité, ils ont pu développer un prototype fonctionnel de l'exploit pour les systèmes x32 64 et 86 bits, qui peut être utilisé par un utilisateur non privilégié. Cependant, Red Hat note que la gravité du problème dépend de l'accessibilité ou non de l'appel système eBPF à l'utilisateur. Par exemple, sur RHEL et la plupart des autres distributions Linux dans la configuration par défaut, la vulnérabilité peut être exploitée si BPF JIT est activé et que l'utilisateur dispose des droits CAP_SYS_ADMIN. Pour contourner le problème, il est recommandé de désactiver BPF JIT à l'aide de la commande : echo 0 > /proc/sys/net/core/bpf_jit_enable.

Le problème est dû à une erreur de calcul du décalage pour les instructions de branchement lors du processus de génération de code machine du compilateur JIT. En particulier, lors de la génération d'instructions de branchement, il ne tient pas compte du fait que le décalage peut changer après le passage par l'étape d'optimisation. Cette faille peut être utilisée pour générer du code machine anormal et l'exécuter au niveau du noyau.

Il est à noter que ce n’est pas la seule vulnérabilité récente du sous-système eBPF. Fin mars, deux autres vulnérabilités ont été identifiées dans le noyau (CVE-2020-27170, CVE-2020-27171), permettant d'utiliser eBPF pour contourner la protection contre les vulnérabilités de la classe Spectre, qui permettent de déterminer le contenu de la mémoire du noyau. en raison de la création de conditions pour l'exécution spéculative de certaines opérations . L'attaque Spectre nécessite la présence d'une certaine séquence de commandes dans un code privilégié qui conduit à une exécution spéculative d'instructions. Dans eBPF, plusieurs façons ont été trouvées pour générer de telles instructions via des manipulations avec des programmes BPF transmis pour exécution.

La vulnérabilité CVE-2020-27170 est causée par une manipulation de pointeur dans le vérificateur BPF qui amène des opérations spéculatives à accéder à une zone en dehors des limites de la mémoire tampon. La vulnérabilité CVE-2020-27171 est due à une erreur de dépassement d'entier lors de l'utilisation de pointeurs, conduisant à un accès spéculatif aux données en dehors du tampon. Ces problèmes ont déjà été résolus dans les versions du noyau 5.11.8, 5.10.25, 5.4.107, 4.19.182 et 4.14.227, et ont également été inclus dans les mises à jour du noyau pour la plupart des distributions Linux. Les chercheurs ont préparé un prototype d'exploit qui permet à un utilisateur non privilégié d'extraire des données de la mémoire du noyau.

Source: opennet.ru

Ajouter un commentaire