Vulnérabilités dans le mécanisme MMIO des processeurs Intel

Intel a divulgué des informations sur une nouvelle classe de fuites de données via les structures microarchitecturales des processeurs, qui permettent, grâce à la manipulation du mécanisme MMIO (Memory Mapped Input Output), de déterminer les informations traitées sur d'autres cœurs de processeur. Par exemple, les vulnérabilités permettent d'extraire des données d'autres processus, d'enclaves Intel SGX ou de machines virtuelles. Les vulnérabilités sont spécifiques uniquement aux processeurs Intel ; les processeurs d'autres fabricants ne sont pas affectés par les vulnérabilités.

Les vulnérabilités apparaissent dans divers processeurs Intel, notamment les processeurs basés sur les microarchitectures Haswell, Skylake, IceLake, Broadwell, Lakefield, Kabylake, Cometlake et Rocketlake, ainsi que Xeon EP/EX, Scalable et certains processeurs de serveur Atom. Pour mener une attaque, un accès à MMIO est requis, qui peut, par exemple, être obtenu dans des systèmes de virtualisation offrant la possibilité d'accéder à MMIO pour les systèmes invités contrôlés par l'attaquant. Un correctif peut également être requis pour les systèmes utilisant des enclaves isolées Intel SGX (Software Guard Extensions).

Le blocage de la vulnérabilité nécessite à la fois une mise à jour du microcode et l'utilisation de méthodes de protection logicielle supplémentaires basées sur l'utilisation de l'instruction VERW pour effacer le contenu des tampons microarchitecturaux lors du retour du noyau vers l'espace utilisateur ou lors du transfert du contrôle vers le système invité. Une protection similaire est également utilisée pour bloquer les attaques précédemment identifiées des classes MDS (Microarchitectural Data Sampling), SRBDS (Special Register Buffer Data Sampling) et TAA (Transactional Asynchronous Abort).

Côté microcode, les modifications nécessaires à la mise en œuvre de la protection ont été proposées dans la mise à jour du microcode de mai pour les processeurs Intel (IPU 2022.1). Dans le noyau Linux, la protection contre une nouvelle classe d'attaques est incluse dans les versions 5.18.5, 5.15.48, 5.10.123, 5.4.199, 4.19.248, 4.14.284 et 4.9.319. Pour vérifier l'exposition du système aux vulnérabilités dans MMIO et évaluer l'activité de certains mécanismes de protection, le fichier « /sys/devices/system/cpu/vulnerabilities/mmio_stale_data » a été ajouté au noyau Linux. Pour contrôler l'inclusion de la protection, le paramètre de démarrage du noyau « mmio_stale_data » a été implémenté, qui peut prendre les valeurs « full » (permet de nettoyer les tampons lors du déplacement vers l'espace utilisateur et dans la VM), « full,nosmt » ( comme « full » + désactive en plus SMT/Hyper-Threads) et « off » (protection désactivée). Des correctifs distincts sont proposés pour l'hyperviseur Xen et le système d'exploitation Qubes.

L'essence de la classe de vulnérabilités identifiée est que certaines opérations conduisent à la copie ou au déplacement des données restantes après exécution sur d'autres cœurs de processeur d'un tampon microarchitectural à un autre. Les vulnérabilités de MMIO permettent à ces données résiduelles d'être transférées de tampons microarchitecturaux isolés vers des registres visibles par l'application ou des tampons CPU. Trois méthodes ont été identifiées pour extraire les données résiduelles via MMIO :

  • DRPW (Device Register Partial Write, CVE-2022-21166) est un problème lié à une gestion incorrecte des écritures dans certains registres MMIO. Si la taille des données en cours d'écriture est inférieure à la taille du registre, alors les informations résiduelles des tampons de remplissage sont également copiées dans le registre. En conséquence, un processus qui lance une opération d'écriture incomplète dans le registre MMIO peut obtenir les données restantes dans les tampons microarchitecturaux à partir d'opérations effectuées sur d'autres cœurs de processeur.
  • SBDS (Shared Buffers Data Sampling, CVE-2022-21125) est une fuite de données résiduelles d'un tampon de remplissage lié au noyau résultant d'un mouvement depuis des tampons intermédiaires communs à tous les noyaux.
  • SBDR (Shared Buffers Data Read, CVE-2022-21123) - le problème est similaire à SBDS, mais diffère en ce que les données résiduelles peuvent se retrouver dans des structures de processeur visibles par les applications. Les problèmes SBDS et SBDR apparaissent uniquement sur les processeurs des systèmes clients et sur la famille de serveurs Intel Xeon E3.

Vulnérabilités dans le mécanisme MMIO des processeurs Intel


Source: opennet.ru

Ajouter un commentaire