Vulnérabilité dans le sous-système eBPF qui permet l'exécution de code au niveau du noyau Linux

Une vulnérabilité (CVE-2021-4204) a été identifiée dans le sous-système eBPF, qui vous permet d'exécuter des gestionnaires à l'intérieur du noyau Linux dans une machine virtuelle spéciale avec JIT, permettant à un utilisateur local non privilégié d'obtenir une élévation de privilèges et d'exécuter son code à la fois. Niveau du noyau Linux. Le problème apparaît depuis le noyau Linux 5.8 et n'est toujours pas résolu (y compris la version 5.16). L'état des mises à jour générées pour résoudre le problème dans les distributions peut être suivi sur ces pages : Debian, RHEL, SUSE, Fedora, Ubuntu, Arch. Il a été annoncé qu'un exploit fonctionnel avait été créé, dont la publication est prévue le 18 janvier (les utilisateurs et les développeurs ont eu une semaine pour corriger la vulnérabilité).

La vulnérabilité est causée par une vérification incorrecte des programmes eBPF transmis pour exécution. Le sous-système eBPF fournit des fonctions auxiliaires dont l'utilisation correcte est vérifiée par un vérificateur spécial. Certaines fonctions nécessitent de passer une valeur PTR_TO_MEM comme argument, et pour éviter d'éventuels débordements de tampon, le vérificateur doit connaître la taille de la mémoire associée à l'argument. Pour les fonctions bpf_ringbuf_submit et bpf_ringbuf_discard, les données sur la taille de la mémoire transférée n'ont pas été signalées au vérificateur, ce qui pourrait être utilisé pour écraser les zones de mémoire au-delà des limites de la mémoire tampon lors de l'exécution d'un code eBPF spécialement conçu.

Pour mener une attaque, l'utilisateur doit pouvoir charger son propre programme BPF, et de nombreuses distributions Linux récentes bloquent cette possibilité par défaut (d'ailleurs l'accès non privilégié à eBPF est désormais interdit par défaut dans le noyau lui-même, à partir de la version 5.16). Par exemple, la vulnérabilité peut être exploitée dans la configuration par défaut d'Ubuntu 20.04 LTS, mais dans les environnements Ubuntu 22.04-dev, Debian 11, openSUSE 15.3, RHEL 8.5, SUSE 15-SP4 et Fedora 33, elle n'apparaît que si l'administrateur a défini le paramètre kernel.unprivileged_bpf_disabled à 0. Comme solution de contournement pour bloquer la vulnérabilité, vous pouvez empêcher l'exécution de programmes BPF par des utilisateurs non privilégiés avec la commande « sysctl -w kernel.unprivileged_bpf_disabled=1 ».

Source: opennet.ru

Ajouter un commentaire