Vulnérabilités du sous-système eBPF qui permettent de contourner la protection contre les attaques Spectre

Une vulnérabilité a été identifiée dans le noyau Linux (CVE-2021-33624) qui permet d'utiliser le sous-système 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 suite à la création de conditions pour le 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. En manipulant les programmes BPF transmis pour exécution, il est possible de générer des instructions similaires dans eBPF et de divulguer le contenu de la mémoire du noyau et des zones arbitraires de la mémoire physique via des canaux secondaires.

La vulnérabilité est causée par des failles dans le vérificateur, utilisé pour détecter les erreurs et les activités inacceptables dans les programmes BPF. Le vérificateur énumère les chemins possibles d'exécution du code, mais ignore les options de branchement inacceptables du point de vue de la sémantique de l'architecture du jeu d'instructions. Lors de l'exécution d'un programme BPF, de telles options de branchement qui ne sont pas prises en compte par le vérificateur peuvent être prédites de manière incorrecte par le processeur et exécutées en mode spéculatif. Par exemple, lors de l'analyse de l'opération « charger », le vérificateur s'attend à ce que l'instruction utilise un registre avec une adresse dont la valeur est toujours dans les limites spécifiées, mais un attaquant peut créer des conditions dans lesquelles le processeur tentera d'effectuer de manière spéculative une opération avec une adresse qui ne répond pas aux conditions de vérification.

Le problème est apparu depuis la sortie du noyau 4.15 et a été corrigé sous forme de correctifs (1, 2, 3, 4). La vulnérabilité reste non corrigée dans les distributions (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

De plus, vous pouvez noter la note sur l'impact sur les performances des outils de protection contre les vulnérabilités Spectre. La note résume les résultats de l'optimisation du débogueur rr (Record and Replay), qui a été créé dans Mozilla pour déboguer les erreurs difficiles à répéter dans Firefox. La mise en cache des appels système utilisés pour vérifier l'existence des répertoires a réduit l'opération "rr sources" pour le projet de test de 3 minutes 19 secondes à 36 secondes.

L'auteur de l'optimisation a décidé de vérifier l'évolution des performances après la désactivation de la protection Spectre. Après avoir démarré le système avec le paramètre « mitigations=off », le temps d'exécution des « sources rr » sans optimisation était de 2 minutes 5 secondes (1.6 fois plus rapide), et avec optimisation, de 33 secondes (9 % plus rapide). Il est intéressant de noter que la désactivation de la protection Spectre a non seulement réduit le temps d'exécution du code au niveau du noyau de 1.4 fois (de 2 min 9 s à 1 min 32 s), mais a également réduit de moitié le temps d'exécution dans l'espace utilisateur (de 1 min 9 s à 0 min 33 s), probablement en raison d'une efficacité réduite du fonctionnement du cache du processeur et du TLB. se réinitialise lorsque la protection Spectre est activée.

Source: opennet.ru

Ajouter un commentaire