web-dev-qa-db-fra.com

Qu'est-ce que l'anneau de protection -1?

En raison du firmware Lenovo ThinkPwn bug j'essaie de comprendre les privilèges et les anneaux.

Si le noyau est Ring 0 et SMM (System Management Mode) est Ring -2, qu'est-ce qui pourrait se trouver entre Ring -1?

36
Thomas Weller

La nomenclature des "anneaux" (0-3) que vous voyez habituellement de nos jours a commencé avec le champ de niveau de privilège demandé dans les sélecteurs de segment dans le cadre de la conception du mode protégé x86.

À l'époque, il était possible de créer des sections exclusives de l'espace mémoire appelées segments. En "mode réel", c'était nécessaire car vous n'aviez qu'une mémoire adressable de 20 bits. Lorsque le mode protégé est apparu, il offrait toujours une segmentation, mais aussi des niveaux de privilèges. Les niveaux 0-2 sont de niveau "superviseur" et peuvent faire la plupart des choses. Les anneaux 1-2 ne peuvent pas exécuter des instructions privilégiées mais c'est la seule vraie limite; sinon, ils sont aussi privilégiés que l'anneau 0.

La sonnerie 3 quant à elle est en "mode utilisateur". Si votre sélecteur de segment est réglé pour pointer vers cet anneau, vous avez besoin de l'aide du noyau via une interface d'appel système afin de faire quoi que ce soit nécessitant un accès privilégié au processeur ou à la mémoire.

De nos jours, il est à peu près nécessaire en x86 64 bits de ne pas utiliser la segmentation. Cependant, les sélecteurs de segments sont toujours là - tous les segments se chevauchent et couvrent tout l'espace d'adressage.

Ainsi, l'objectif initial de l'anneau 0-3 était d'isoler les privilèges entre le code du mode utilisateur et le noyau et d'arrêter le code du mode utilisateur dans toutes les structures de contrôle du système.

Ensuite, la virtualisation est devenue une chose sur x86 et Intel/AMD a décidé d'ajouter un support matériel pour cela. Cela nécessite un morceau de code superviseur (hyperviseur) pour configurer certaines structures de contrôle (appelées VMCS) définissant les machines virtuelles, puis appeler vmenter et gérer vmexit c'est-à-dire les conditions dans lesquelles la machine virtuelle a besoin d'aide de l'hyperviseur.

Ce morceau de code est appelé "anneau -1". Il n'y a pas un tel niveau de privilège, mais comme il peut héberger plusieurs noyaux qui croient tous avoir un accès en anneau 0 au système, cela a du sens.

Le mode de gestion du système est une autre bête avec des instructions spéciales. Le micrologiciel (votre BIOS) configure un gestionnaire SMM pour gérer les interruptions de gestion du système - configurable en fonction de ce dont le micrologiciel souhaite être informé. Lorsque ces événements sont déclenchés, le système d'exploitation (ou même l'hyperviseur) est suspendu et un espace d'adressage spécial est entré. Cette zone est censée être invisible pour le système d'exploitation lui-même, lors de l'exécution sur le même processeur. D'où "anneau -2", car il est plus privilégié qu'un hyperviseur.

Vous entendrez également "ring -3" mentionné ici et là en référence à Intel ME ou à la PSP d'AMD. Il s'agit d'un deuxième processeur exécutant un micrologiciel distinct (Intel, je crois, utilise des processeurs ARC SoC) capable de faire tout ce qu'il souhaite au système principal. En apparence, il s'agit de fournir une gestion IPMI/à distance des fonctionnalités de type matériel. Il peut fonctionner chaque fois que le matériel est alimenté, que le système principal soit allumé ou non - son but, comme je l'ai dit, serait de mettre le système principal sous tension.

Du point de vue de la sécurité, l'anneau inférieur dans lequel vous pouvez vous mettre, plus vous pouvez vous rendre indétectable. La recherche Bluepill visait à cacher à un système d'exploitation le fait qu'il fonctionnait vraiment dans une machine virtuelle. Des recherches ultérieures ont été effectuées sur la persistance de SMM. La persistance de SMM, par exemple, vous permettrait potentiellement de réinstaller votre malware même sur un essuyage complet du disque dur et de le réinstaller. Intel ME ouvre potentiellement une puce en réseau toujours persistante pour installer des logiciels malveillants sur la cible principale.

Je suis resté fidèle aux puces Intel ici, mais vous devez savoir que les autres plates-formes fonctionnent différemment. Par exemple, les puces ARM ont des modes "superviseur" et "utilisateur", entre autres).

65
diagprov

Ring -1 est l'hyperviseur, implémenté comme Intel VT-x ("Vanderpool") [Wikipedia] ou AMD-V ("Pacifica") [Wikipedia] .

9
Thomas Weller