Vulnérabilité dans le mécanisme d'exécution spéculative des processeurs AMD

Le projet Grsecurity a publié des détails et une démonstration de la méthode d'attaque pour une nouvelle vulnérabilité (CVE-2021-26341) dans les processeurs AMD liée à l'exécution spéculative d'instructions après des opérations avancées inconditionnelles. Si l'attaque réussit, la vulnérabilité permet de déterminer le contenu de zones mémoire arbitraires. Par exemple, les chercheurs ont préparé un exploit qui leur permet de déterminer la disposition des adresses et de contourner le mécanisme de protection KASLR (kernel memory randomization) en exécutant du code non privilégié dans le sous-système du noyau ePBF. D'autres scénarios d'attaque ne peuvent être exclus qui pourraient entraîner une fuite du contenu de la mémoire du noyau.

La vulnérabilité vous permet de créer des conditions dans lesquelles le processeur, lors d'une exécution préemptive, traite de manière spéculative l'instruction qui suit immédiatement l'instruction de saut en mémoire (SLS, Straight Line Speculation). De plus, une telle optimisation fonctionne non seulement pour les opérateurs de saut conditionnel, mais également pour les instructions impliquant un saut direct inconditionnel, telles que JMP, RET et CALL. Suite à des instructions de saut inconditionnelles, des données arbitraires qui ne sont pas destinées à être exécutées peuvent être placées. Après avoir déterminé qu'un branchement n'implique pas l'exécution de l'instruction suivante, le processeur annule simplement l'état et ignore l'exécution spéculative, mais la trace de l'exécution de l'instruction reste dans le cache partagé et est disponible pour analyse à l'aide de techniques de récupération par canal secondaire.

Comme pour l'exploitation de la vulnérabilité Spectre-v1, l'attaque nécessite la présence de certaines séquences d'instructions (gadgets) dans le noyau qui conduisent à une exécution spéculative. Bloquer une vulnérabilité dans ce cas revient à identifier ces gadgets dans le code et à leur ajouter des instructions supplémentaires qui bloquent l'exécution spéculative. Les conditions d'exécution spéculative peuvent également être créées par des programmes non privilégiés exécutés dans la machine virtuelle eBPF. Pour bloquer la possibilité de construire des gadgets à l'aide d'eBPF, il est recommandé de désactiver l'accès non privilégié à eBPF dans le système (« sysctl -w kernel.unprivileged_bpf_disabled=1 »).

La vulnérabilité affecte les processeurs basés sur la microarchitecture Zen1 et Zen2, y compris les première et deuxième générations de processeurs AMD EPYC et AMD Ryzen Threadripper, ainsi que AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Processeurs des séries PRO et APU A. Pour bloquer l'exécution spéculative des instructions, il est recommandé d'appeler les instructions INT3 ou LFENCE après les opérations de branchement (RET, JMP, CALL).

Source: opennet.ru

Ajouter un commentaire