Vulnérabilités dans les coprocesseurs

L'actualité de ces derniers mois a été marquée par des publications très médiatisées de vulnérabilités touchant les processeurs. Ce bulletin d'actualité est l'occasion de revenir sur deux groupes de vulnérabilités en particulier. Le premier concerne les processeurs AMD et a été rendu publique sous le nom d'AMD Flaws. Le second concerne les processeurs Intel et a été publié dans le Security Advisory numéro 86 d'Intel. Ces deux groupes de vulnérabilités affectent le firmware d'un coprocesseur dont on retrouve le principe dans les produits des deux fabricants. De ce fait, ces deux groupes de vulnérabilités partagent de nombreuses caractéristiques. C'est pourquoi elles sont présentées dans un bulletin commun.

Ce bulletin d'actualité ne fera pas mention des vulnérabilités Spectre et Meltdown. Ces dernières reposent sur l’utilisation du cache pour capter des effets de bords d'une exécution désordonnée ou spéculative erronée. Que ce soit au niveau des causes, des techniques d'exploitation, des impacts sur la sécurité du système ou encore des correctifs à apporter, ces deux vulnérabilités sont très différentes de celles dont il sera question ici. Les vulnérabilités qui touchent les coprocesseurs sont en un sens beaucoup plus traditionnelles, puisque causées par des défauts de conception ou d'implémentation logicielle connus de longue date.

AMD Flaws - Mars 2018

Événements

Le 13 mars 2018, la société CTS-Labs annonçait avoir identifié 13 vulnérabilités affectant les processeurs x86 de dernière génération du fabriquant AMD (1). Cette annonce n'a pas été réalisée conformément au principe de divulgation responsable. CTS-Labs a prévenu AMD seulement 24 heures avant d'annoncer publiquement l’existence de ces vulnérabilités. Cette publication n'a été accompagnée d’aucun élément technique qui aurait pu permettre l'exploitation de ces vulnérabilités, mais aussi de vérifier le bien fondé de leur annonce.

Depuis, plusieurs sociétés et chercheurs indépendants ayant eu accès aux détails des travaux de CTS ont confirmé l'existence de ces vulnérabilités (2, 3). Plus récemment, elles ont également été reconnues par AMD, qui a annoncé des correctifs dans les prochaines semaines (4). Ceux-ci seront distribués au travers d'une mise à jour du BIOS.

Vulnérabilités

Ces 13 vulnérabilités se regroupent en quatre familles, appelées Masterkey, Ryzenfall, Fallout et Chimera.

Les trois premières familles (Masterkey, Ryzenfall et Fallout) rassemblent des vulnérabilités contenues dans le firmware exécuté par le Platform Security Processor (PSP).

Le PSP, récemment renommé AMD Secure Processor, est un coprocesseur propre aux micro-architectures d'AMD, qui réalise des fonctions de sécurité telles que l'authentification de la séquence de démarrage (hardware validated boot) et le chiffrement de la mémoire dans le cadre d'une extension à la virtualisation matérielle (Secure Encrypted Virtualization). Il exécute du code propriétaire signé par AMD. Il est comparable, bien qu'offrant des fonctionnalités moins riches, au Management Engine (ME) d'Intel. Une vulnérabilité dans le firmware du PSP y permettant une exécution de code arbitraire avait déjà été publié en janvier 2018 (5).

L'exploitation des vulnérabilités de la famille MasterKey permet une exécution de code arbitraire par le PSP. L'exploitation des vulnérabilités des familles Ryzenfall et Fallout permet un accès en lecture et/ou en écriture à certains segments mémoires qui ne sont initialement pas accessibles depuis le système d'exploitation. Cela inclut des segments mémoire protégés par des mécanismes de virtualisation matérielle, les segments mémoire réservés au System Management Mode (SMM) et les segments mémoire réservées au PSP. Dans les cas les plus critiques, l'exploitation conduit à une exécution de code arbitraire en mode SMM et/ou par le PSP.

La dernière famille (Chimera) rassemble des vulnérabilités contenues dans certains chipsets d'AMD. Ces chipsets conçus en collaboration avec ASMedia sont utilisés dans les sockets AM4 et TR4 qui supportent la dernière génération des processeurs x86 d'AMD. Leur exploitation conduit à une exécution de code arbitraire dans le chipset.

Pour exploiter l'ensemble de ces vulnérabilités, il est nécessaire de pouvoir exécuter du code à un niveau privilégié. Les vulnérabilités appartenant à la famille Masterkey demandent également de pouvoir réécrire la mémoire flash contenant le BIOS. Dans aucun cas, il n'est nécessaire d'avoir un accès physique à la machine cible.

Impacts

Ces vulnérabilités permettent à un attaquant qui serait déjà administrateur local:
  • de se soustraire aux fonctions de sécurité implémentées par le PSP ;
  • de contourner les protections basées sur la virtualisation matérielle mise en place par Windows, par exemple pour voler des identifiants protégés par Windows Credential Guard ;
  • d'exécuter du code malveillant avec des droits supérieurs à ceux du système d'exploitation, de façon totalement invisible, et impossible à supprimer sans intervention physique.
Les gammes de processeurs EPYC, Ryzen, Ryzen Pro et Ryzen Mobile sont concernées par au moins l'une de ces vulnérabilités.

Intel Security Advisory 86 - Novembre 2017

Événements

Le 20 novembre 2017, Intel annonçait avoir identifié un grand nombre de vulnérabilités critiques dans le firmware du ME (6). Au total 12 numéros de CVE ont été affectés à ces vulnérabilités: CVE-2017-5705, CVE-2017-5706, CVE-2017-5707, CVE-2017-5708, CVE-2017-5709, CVE-2017-5710, CVE-2017-5711 et CVE-2017-5712. Cette annonce a fait suite à une notification reçue par Intel de la part de la société Positive Technologies au mois de juin 2017 qui l'informait de la découverte d'une vulnérabilité au sein du firmware du ME. L'annonce d'Intel reprenait cette première vulnérabilité, mais faisait aussi mention de plusieurs autres vulnérabilités probablement découvertes entre temps. Des détails techniques concernant la vulnérabilité trouvée par Positive technologies ont été rendus publique lors de la conférence BlackHat Europe 2017 (7).

Intel a fourni des correctifs pour l'ensemble de ces vulnérabilités aux fabricants de cartes mères pour qu'ils puissent être déployés au travers d'une mise à jour du BIOS. Intel a également publié un outil permettant de détecter si une machine exécute un firmware vulnérable (8).

A noter que le firmware du ME avait déjà fait l'objet d'une vulnérabilité critique au mois de mai 2017 (9). Cette vulnérabilité, identifiée CVE-2017-5689,  découverte par la société Embedi, permet de contourner l’authentification du module Active Management Technology (AMT). Ce module, contenu dans certaines éditions du firmware du ME, propose des fonctionnalités d'administration à distance.

Vulnérabilités

Pour rappel, le ME est un coprocesseur propre aux micro-architectures d'Intel. Il est situé dans le chipset et dispose d'interfaces de communication. Pour sa version la plus récente, il s'agit d'un microcontrôleur 32-bit Quark x86. Il exécute du code propriétaire signé par Intel. Par le biais de modules, il implémente des fonctionnalités diverses: administration à distance avec le module AMT ou encore authentification de la séquence de démarrage avec le module Boot Guard.

La vulnérabilité publiée par Positive Technologies permet une exécution de code arbitraire par le ME. Très peu de détails sont disponibles concernant les autres vulnérabilités découvertes par Intel. D'après la description des CVEs associées (CVE-2017-5708, ..., CVE-2017-5712), elles affectent soit le système d'exploitation en charge du ME, soit le module AMT. Et elles permettent soit une exécution de code arbitraire, soit une élévation de privilège au sein du ME.

Toutes, à l'exception de la CVE-2017-5712, nécessitent de pouvoir réécrire une partie de la mémoire flash contenant le BIOS pour être exploitées, ce qui demande au minimum de pouvoir exécuter du code privilégié. Dans le cas où le fabricant de cartes mère aurait utilisé les protections de la mémoire flash recommandées par Intel, cette condition n'est réalisable qu'avec un accès physique à la machine victime. La vulnérabilité CVE-2017-5712, est elle exploitable à travers le réseau, à condition de posséder des identifiants administrateur pour le module AMT.

Impacts

Comme dans le cas des vulnérabilités AMD Flaws, la capacité d'exécuter du code arbitraire sur un coprocesseur donne à un attaquant des droits étendus sur le matériel (par rapport à ceux du système d'exploitation), lui assurant une capacité de résilience très importante et le rendant extrêmement délicat à détecter. Il semble ici, comparativement au PSP, plus facile pour un code malveillant de tirer profit de cette position de force, puisque le ME et son firmware dispose nativement de fonctionnalités d'administration à distance.

De très nombreux processeurs Intel sont concernés par ces vulnérabilités. Pour savoir si un système est vulnérable, se reporter à l'outil publié par Intel.

Conclusion

Les vulnérabilités décrites dans ce bulletin sont contenues dans le firmware du coprocesseur PSP pour AMD et ME pour Intel. Ce coprocesseur est indépendant du système d'exploitation et dispose de droits étendus sur le matériel. Sa compromission entraîne la compromission du système principal.

L'exploitation de la très grande majorité de ces vulnérabilités requiert des droits administrateur. Ces vulnérabilités présentent néanmoins un intérêt pour un attaquant qui chercherait des capacités de furtivité et de persistance hors norme. Cependant, ces coprocesseurs peuvent exporter des fonctionnalités possiblement vulnérables sans passer par le système d'exploitation (cas du module AMT). Dans ce cas, l'exploitation ne demande pas de droit particulier sur le système principal (CVE-2017-5689 et CVE-2017-5712), ce qui les rend particulièrement critiques. Concernant le module Intel ME, le CERT-FR recommande de veiller à ce que les équipements ne conservent pas leurs identifiants ME et AMT par défaut lors de leur déploiement.

Ces vulnérabilités sont pour la plupart simples à corriger pour les fabricants. Ne pouvant être déployés que par une mise à jour du BIOS, ces correctifs sont disponibles pour Intel mais pas encore pour AMD.

Rappel des publications émises

Dans la période du 12 mars 2018 au 18 mars 2018, le CERT-FR a émis les publications suivantes :