Kasper, un scanner de problèmes d'exécution de code spéculatif dans le noyau Linux, est désormais disponible

Une équipe de chercheurs de l'Université libre d'Amsterdam a publié une boîte à outils Kasper conçue pour identifier les extraits de code du noyau Linux pouvant être utilisés pour exploiter les vulnérabilités de classe Spectre causées par l'exécution de code spéculatif sur le processeur. Le code source de la boîte à outils est distribué sous la licence Apache 2.0.

Rappelons que pour mener des attaques comme Spectre v1, qui permettent de déterminer le contenu de la mémoire, la présence dans le code privilégié d'une certaine séquence de commandes (gadgets) est requise, conduisant à une exécution spéculative d'instructions. . À des fins d'optimisation, le processeur commence à exécuter ces gadgets en mode spéculatif, puis détermine que la prédiction de branchement n'était pas justifiée et ramène les opérations à leur état d'origine, mais les données traitées lors de l'exécution spéculative se retrouvent dans le cache et les tampons microarchitecturaux et est disponible pour être récupéré à l'aide de diverses méthodes déterminant les données résiduelles via des canaux tiers.

Les outils précédemment disponibles pour analyser les gadgets pour la vulnérabilité Spectre, basés sur la recherche de modèles typiques, ont montré un niveau très élevé de faux positifs, tout en manquant de nombreux gadgets réels (des expériences ont montré que 99 % des gadgets identifiés par ces outils ne pouvaient pas être utilisés pour des attaques. , et 33 % des gadgets fonctionnels susceptibles de conduire à une attaque n'ont pas été remarqués).

Pour améliorer la qualité de l'identification des gadgets problématiques, Kasper modélise les vulnérabilités qu'un attaquant peut exploiter à chaque étape de la réalisation d'attaques de classe Spectre - les problèmes permettant le contrôle des données sont modélisés (par exemple, en remplaçant les données de l'attaquant dans des structures microarchitecturales pour influencer l'exécution spéculative ultérieure en utilisant Attaques de classe LVI), accéder à des informations confidentielles (par exemple, en dépassant les limites du tampon ou en utilisant de la mémoire après sa libération) et divulguer des informations confidentielles (par exemple, en analysant l'état du cache du processeur ou en utilisant la méthode MDS).

Kasper, un scanner de problèmes d'exécution de code spéculatif dans le noyau Linux, est désormais disponible

Lors des tests, le noyau est lié aux bibliothèques d'exécution de Kasper et les vérifications s'exécutent au niveau LLVM. Le processus de vérification émule l'exécution de code spéculatif, implémenté à l'aide du mécanisme de restauration de point de contrôle, qui exécute spécifiquement une branche de code mal prédite, puis revient à l'état d'origine avant le début de la branche. Kasper tente également de simuler diverses vulnérabilités logicielles et matérielles, analyse l'impact des effets architecturaux et microarchitecturaux et effectue des tests fuzz sur les actions possibles des attaquants. Pour analyser les flux d'exécution, le port DataFlowSanitizer pour le noyau Linux est utilisé et pour les tests de fuzzing, une version modifiée du package syzkaller est utilisée.

Kasper, un scanner de problèmes d'exécution de code spéculatif dans le noyau Linux, est désormais disponible

Une analyse du noyau Linux à l'aide de Kasper a identifié 1379 XNUMX gadgets jusqu'alors inconnus qui pourraient potentiellement entraîner une fuite de données lors de l'exécution spéculative d'instructions. Il est à noter que seuls certains d'entre eux peuvent poser de réels problèmes, mais pour démontrer qu'il existe un danger réel, et pas seulement théorique, un prototype fonctionnel d'exploit a été développé pour l'un des fragments de code problématiques, conduisant à des informations fuite de la mémoire du noyau.

Source: opennet.ru

Ajouter un commentaire