【Résumé de l'article】 Attaques de ressources abstraites contre la virtualisation au niveau du système d'exploitation

introduire

Ceci est un article de 2021CCS, les auteurs sont Nanzi Yang, Wenbo Shen, Jinku Li, Yutian Yang, Kangjie Lu, Jietao Xiao, Tianyu Zhou, Chenggang Qin, Wang Yu, Jianfeng Ma, Kui Ren.

aperçu

Les apports de cet article sont les suivants :

  1. Nouvelle surface d'attaque : l'auteur révèle une attaque de ressources abstraites qui affecte les principales fonctions du système d'exploitation, affecte plusieurs systèmes d'exploitation et est partagée par la virtualisation du système d'exploitation.

  2. Évaluation de la praticabilité des attaques : les environnements de conteneurs natifs auto-déployés fournis par les quatre principaux fournisseurs de cloud computing sont tous affectés par les attaques de ressources abstraites.

  3. Analyse systématique : l'auteur a conçu et mis en œuvre un outil d'analyse statique et identifié 501 ressources abstraites pouvant être déclenchées de manière répétée par le conteneur.

  4. L'auteur a ouvert le code source de l'outil et les résultats sur Github

    Adresse Github : https://github.com/ZJU-SEC/AbstractResourceAttack

aperçu

Cet article révèle un problème inhérent à la virtualisation au niveau du système d'exploitation - le partage des variables du noyau et des structures de données. Par rapport aux ressources physiques (CPU, mémoire), ces variables noyau et structures de données sont aussi appelées ressources abstraites. Sur la base de ces ressources abstraites partagées, cet article propose un nouveau type d'attaque - l'attaque des ressources abstraites. Des expériences ont prouvé que les attaques de ressources abstraites peuvent affecter toutes les fonctions principales du système d'exploitation, y compris la gestion des processus, la gestion de la mémoire, la gestion du stockage et la gestion des E/S, provoquant des pannes du système ou une dégradation significative des performances ; en même temps, elles peuvent attaquer la plupart des systèmes d'exploitation courants. systèmes, y compris Linux, FreeBSD et le noyau Fuchsia ; en même temps, l'article est encore vérifié dans l'environnement des quatre principaux fournisseurs de cloud, prouvant que l'attaque des ressources abstraites est toujours possible dans l'environnement de conteneur de noyau partagé qui y est déployé, révélant l'ampleur et la gravité de l'impact de l'attaque. Cet article implémente et ouvre en open source un outil d'analyse statique pour analyser systématiquement les attaques potentielles de ressources abstraites sous Linux, et découvre plus de 500 ressources abstraites vulnérables dans le noyau Linux.

arrière-plan

La virtualisation au niveau du système d'exploitation est une technologie de base du cloud computing qui permet à plusieurs environnements d'espace utilisateur indépendants et isolés de s'exécuter sur le même noyau. Actuellement, la virtualisation au niveau du système d'exploitation est représentée par des conteneurs Linux, les prisons de FreeBSD et les zones de Solaris sont plus couramment utilisées.

L'article utilise des conteneurs pour faire référence à ces espaces d'exécution d'utilisateurs indépendants qui partagent le noyau.À l'heure actuelle, le conteneur le plus largement utilisé est le conteneur Docker, qui est utilisé par deux plates-formes cloud communes, Red Hat Openshift et Apache Openwhisk.

Contrairement à la virtualisation traditionnelle, qui maintient un noyau distinct pour chaque machine virtuelle, les conteneurs ont des vitesses de démarrage plus rapides et une meilleure efficacité d'utilisation des ressources en raison de leurs caractéristiques de noyau partagées. Dans les conteneurs Linux, le noyau fournit des mécanismes d'espace de noms et de groupe de contrôle pour implémenter l'isolation et la limitation des ressources, et le noyau fournit également des mécanismes de sécurité tels que seccomp et selinux pour le renforcement de la sécurité. En raison de la large application des conteneurs, leurs problèmes de sécurité ont également attiré beaucoup d'attention.Des recherches antérieures se sont principalement concentrées sur les fuites d'informations, les attaques par canal latéral et les charges hors bande.

attaque de ressources abstraites

Différent des travaux précédents, cet article part d'une nouvelle perspective.L'auteur estime qu'en plus des ressources physiques telles que le processeur et la mémoire, les variables et les structures maintenues dans le système d'exploitation sont également des ressources très importantes. Les conteneurs (conteneurs natifs) s'exécutant sur le même noyau de système d'exploitation peuvent accéder aux services fournis par le noyau via des appels système, et les appels système utiliseront un grand nombre de variables et de structures maintenues par le noyau, de sorte que les conteneurs partagent ces variables et structures.

Sur la base des dépendances de données complexes entre le conteneur et le noyau, l'auteur se réfère collectivement aux variables et aux structures maintenues par le noyau en tant que ressources abstraites (Abstract Resource), et propose un nouveau type d'attaque - Abstract Resource Attack (Abstract Resource Attack ), Le cœur de cette attaque est que le conteneur malveillant lance une attaque par déni de service (DoS) en épuisant les ressources abstraites partagées entre les conteneurs dans le noyau, et il a les caractéristiques suivantes :

  1. Les attaques peuvent être lancées dans des conteneurs non privilégiés, supprimez toutes les fonctionnalités sans exploiter les vulnérabilités du noyau.
  2. Les attaques peuvent affecter toutes les fonctions principales fournies par le système d'exploitation.
  3. L'attaque peut affecter plusieurs systèmes d'exploitation majeurs tels que Linux, FreeBSD et Fuchsia.
  4. Les mécanismes existants tels que l'espace de noms et le groupe de contrôle sous Linux ne peuvent pas limiter efficacement les ressources abstraites.

Les caractéristiques ci-dessus montrent que la nouvelle surface d'attaque de l'attaque des ressources abstraites est un problème courant introduit par la virtualisation au niveau du système d'exploitation, et le mécanisme existant ne peut pas le limiter efficacement.

Cause première de l'attaque des ressources abstraites

L'auteur a d'abord expliqué la cause profonde de la ressource abstraite à partir d'une attaque example-nr_files. Il existe une variable globale nr_files dans le noyau Linux. Étant donné que ni l'espace de noms ni le cgroup n'isolent et ne restreignent la variable nr_files, les conteneurs malveillants peuvent facilement épuiser nr_files et lui faire atteindre files_stat .max_files limite supérieure, de sorte que le conteneur attaqué ne puisse pas effectuer d'opérations liées aux fichiers.
insérez la description de l'image ici

Attaques de ressources abstraites contre les plates-formes cloud

Afin d'évaluer davantage l'impact des attaques de ressources abstraites, l'auteur a également sélectionné sept ressources abstraites et mené des expériences dans l'environnement de conteneur natif auto-déployé fourni par les quatre principaux fournisseurs de cloud. Les résultats expérimentaux montrent que l'environnement de conteneur natif auto-déployé de chaque fournisseur de cloud est vulnérable aux attaques de ressources abstraites. Au cours de l'expérience, l'auteur a également été agréablement surpris de constater que le conteneur de sécurité gVisor de Google est également affecté par deux attaques de ressources abstraites (nr_files et netns_ct->count). En effet, bien que gVisor implémente son propre noyau en mode utilisateur, il lancera éventuellement un appel système au noyau hôte pour terminer la demande correspondante. L'auteur a divulgué les problèmes pertinents aux quatre principaux fournisseurs de cloud computing et a reçu leurs réponses et confirmations.
insérez la description de l'image ici

Conception de l'outil d'analyse statique et résultats d'analyse

Enfin, l'auteur a également conçu et implémenté un outil d'analyse statique LLVM systématisé pour trouver automatiquement des ressources abstraites dans le noyau Linux qui peuvent être épuisées par des conteneurs. Afin de résoudre les deux principaux défis de savoir comment identifier les ressources abstraites significatives et comment distinguer si les ressources abstraites peuvent être épuisées par le conteneur, l'outil comprend respectivement une analyse basée sur les configurations et une analyse basée sur l'accès. Parmi les 1010 résultats analysés par l'outil, il y a 700 ressources qui ne sont pas liées au conducteur, et 310 ressources qui sont liées au conducteur. Après une vérification supplémentaire du déclenchement dynamique, parmi les 700 ressources, 389 ressources peuvent être déclenchées à plusieurs reprises par le conteneur, et le taux de vrais positifs est de 55,6 %. Parmi les 310 ressources liées au pilote, 92 ressources qui n'ont pas de support matériel local sont exclues, et 112 ressources abstraites peuvent être déclenchées à plusieurs reprises par le conteneur, avec un taux de vrais positifs de 51,4 %.
insérez la description de l'image ici
insérez la description de l'image ici

Je suppose que tu aimes

Origine blog.csdn.net/Ohh24/article/details/130057349
conseillé
Classement