BHI est une nouvelle vulnérabilité de classe Spectre dans les processeurs Intel et ARM

Un groupe de chercheurs de la Vrije Universiteit Amsterdam a identifié une nouvelle vulnérabilité dans les structures microarchitecturales des processeurs Intel et ARM, qui est une version étendue de la vulnérabilité Spectre-v2, qui permet de contourner les mécanismes de protection eIBRS et CSV2 ajoutés aux processeurs. . La vulnérabilité a reçu plusieurs noms : BHI (Branch History Injection, CVE-2022-0001), BHB (Branch History Buffer, CVE-2022-0002) et Spectre-BHB (CVE-2022-23960), qui décrivent différentes manifestations de le même problème (BHI - une attaque affectant différents niveaux de privilèges, par exemple, le processus utilisateur et le noyau, BHB - une attaque au même niveau de privilèges, par exemple, eBPF JIT et le noyau).

Les chercheurs ont démontré un exploit fonctionnel qui permet d'extraire des données arbitraires de la mémoire du noyau depuis l'espace utilisateur. Par exemple, il est montré comment, à l'aide d'un exploit préparé, il est possible d'extraire des tampons du noyau une chaîne avec un hachage du mot de passe de l'utilisateur root chargé à partir du fichier /etc/shadow. L'exploit démontre la possibilité d'exploiter une vulnérabilité au sein d'un seul niveau de privilège (attaque de noyau à noyau) à l'aide d'un programme eBPF chargé par l'utilisateur. Il est également possible d'utiliser à la place des gadgets Spectre existants dans le code du noyau, des séquences de commandes qui conduisent à l'exécution spéculative d'instructions.

La vulnérabilité apparaît dans la plupart des processeurs Intel actuels, à l'exception des processeurs de la famille Atom. Parmi les processeurs ARM, Cortex-A15, Cortex-A57, Cortex-A7*, Cortex-X1, Cortex-X2, Cortex-A710, Neoverse N1, Neoverse N2, Neoverse V1 et éventuellement certaines puces Cortex-R sont concernés par le problème. Selon les recherches, la vulnérabilité n'apparaît pas dans les processeurs AMD. Pour éliminer le problème, plusieurs méthodes logicielles ont été proposées pour bloquer la vulnérabilité, qui peuvent être utilisées avant l'apparition d'une protection matérielle dans les futurs modèles de CPU.

Pour bloquer les attaques via le sous-système eBPF, il est recommandé de désactiver par défaut la possibilité pour les utilisateurs non privilégiés de télécharger des programmes eBPF en écrivant 1 dans le fichier « /proc/sys/kernel/unprivileged_bpf_disabled » ou en exécutant la commande « sysctl -w kernel. unprivileged_bpf_disabled=1 ». Pour bloquer les attaques de gadgets, il est recommandé d'utiliser l'instruction LFENCE dans les sections de code pouvant conduire à une exécution spéculative. Il est à noter que la configuration par défaut de la plupart des distributions Linux contient déjà les mesures de protection nécessaires, suffisantes pour bloquer l'attaque eBPF démontrée par les chercheurs. Les recommandations d'Intel pour désactiver l'accès non privilégié à eBPF sont également celles par défaut depuis le noyau Linux 5.16 et seront rétroportées vers les branches antérieures.

Conceptuellement, BHI est une version étendue de l'attaque Spectre-v2, dans laquelle, pour contourner la protection supplémentaire (Intel eIBRS et Arm CSV2) et organiser les fuites de données, la substitution de valeur est utilisée dans le tampon d'historique de branche, utilisé dans le processeur pour augmenter la prédiction. branchement de précision en tenant compte de l’historique des transitions passées. Au cours de l'attaque, grâce à des manipulations de l'historique des transitions, des conditions sont créées pour une prédiction incorrecte de la transition et une exécution spéculative des instructions nécessaires, dont le résultat se retrouve dans le cache.

À l’exception de l’utilisation d’un tampon d’historique de branche au lieu d’un tampon de cible de branche, la nouvelle attaque est identique à Spectre-v2. La tâche de l'attaquant est de créer des conditions telles que l'adresse, lors de l'exécution d'une opération spéculative, soit extraite de la zone des données définies. Après avoir effectué un saut indirect spéculatif, l'adresse de saut lue dans la mémoire reste dans le cache, après quoi l'une des méthodes de détermination du contenu du cache peut être utilisée pour le récupérer sur la base d'une analyse des changements de temps d'accès aux mises en cache et non mises en cache. données.

Source: opennet.ru

Ajouter un commentaire