
Le principe de la «
sécurité par l'obscurité » est critiqué par les experts depuis plusieurs années, mais cela n'empêche pas les grands fabricants d'électronique, sous prétexte de protéger la propriété intellectuelle, d'exiger la signature d'accords de non-divulgation pour recevoir la documentation technique. La situation se détériore en raison de la complexité croissante des microcircuits et de l'intégration de divers micrologiciels propriétaires en leur sein. Cela rend en fait impossible d'analyser de telles plates-formes pour des chercheurs indépendants, ce qui met en danger les utilisateurs ordinaires et les fabricants d'équipements.
Un exemple est la technologie Intel Management Engine (Intel ME), ainsi que ses versions pour les plates-formes serveur (Intel SPS) et mobiles (Intel TXE) (voir
[5] ,
[6] pour plus d'informations sur cette technologie. Dans cet article, nous dirons comment utiliser des commandes non documentées (si le terme "documenté" est généralement applicable à Intel ME), vous pouvez remplacer la mémoire flash SPI et implémenter le pire scénario - exploitation locale d'une vulnérabilité dans ME (INTEL-SA-00086). La racine de ce problème était le mode de fonctionnement non documenté d'Intel ME - Mode de fabrication.
Qu'est-ce que le mode de fabrication
Intel ME Manufacturing Mode - mode de fonctionnement de service conçu pour configurer, configurer et tester la plate-forme finale au stade de la production; il doit être éteint avant la mise en vente de l'équipement et expédié à l'utilisateur. Ni ce mode, ni ses risques potentiels ne sont décrits dans la documentation publique d'Intel. Un utilisateur ordinaire n'est pas en mesure de le désactiver par lui-même, car l'utilitaire pour le gérer à partir du package Intel ME System Tools n'est pas officiellement disponible. Notez qu'aucune protection logicielle ne peut protéger l'utilisateur si ce mode est activé, ou du moins l'en informer. Même l'utilitaire Chipsec
[2] , spécialement conçu pour détecter les erreurs de configuration du chipset et du processeur au niveau du firmware UEFI (en particulier, la configuration incorrecte des droits d'accès aux régions flash SPI), ne sait rien du mode de fabrication Intel.
Ce mode vous permet de définir des paramètres de plateforme critiques stockés dans la mémoire à écriture unique (FUSES). Un exemple de tels paramètres qui sont «câblés» dans FUSES sont les paramètres BootGuard (mode, politiques, somme de contrôle de clé de signature numérique pour les modules ACM et UEFI). Certains d'entre eux sont appelés FPF (Field Programmable Fuses). La liste des FPF qui peuvent être écrits dans FUSES (incomplète, en fait, un certain nombre de FPF ne peut pas être définie directement) peut être obtenue via l'utilitaire FPT (Flash Programming Tool) du package Intel ME System Tools.
Fig 1. Le résultat de l'option –FPFs de l'utilitaire FPTIl convient de noter que les FPF ne représentent qu'une partie de la baie FUSE totale, et la plupart de cette mémoire est utilisée par Intel lui-même pour stocker de nombreux paramètres de plate-forme. Par exemple, une partie de l'espace de cette baie est appelée fusibles IP et est destinée à stocker les paramètres de configuration des modules matériels individuels (propriété intelligente). Ainsi, le dispositif DFx Aggregator spécial stocke dans FUSE un signe indiquant si la plate-forme est série ou test.
En plus de FPF, en mode de fabrication, le fabricant d'équipement a la possibilité de définir les paramètres du micrologiciel Intel ME, qui sont stockés dans le système de fichiers du micrologiciel interne - MFS, sur un support flash SPI. Ces paramètres peuvent être modifiés en cas de reprogrammation du flash SPI. Ils sont appelés CVAR (NVAR configurables, variables nommées).
Pour l'installation des CVAR, le module du micrologiciel Intel ME, mca_server, est responsable. MCA est l'abréviation de Manufacture-Line Configuration Architecture, le nom commun pour le processus de configuration de la plateforme pendant la phase de fabrication. Les CVAR, comme les FPF, peuvent être définis et lus à l'aide de FPT.
Figure 2. Liste des CVAR générés par l'utilitaire FPT pour la plate-forme Broxton PLa liste des CVAR varie en fonction de la plate-forme et de la version du micrologiciel Intel ME. Pour les chipsets qui prennent en charge la technologie Intel AMT, l'une de ces variables est le mot de passe pour entrer le MEBx (ME BIOS Extension).
L'installation de FPF et de presque toutes les variables CVAR n'est possible que si le micrologiciel Intel ME fonctionne en mode de fabrication. Le processus d'installation des FPF lui-même est divisé en deux étapes: la définition des FPF (qui sont stockés dans la mémoire temporaire) et le transfert des FPF vers un réseau de fusibles. En même temps, la première étape n'est possible qu'en mode de fabrication, et la «gravure» réelle se produit automatiquement après avoir quitté le mode de fabrication, si pendant le fonctionnement dans ce mode, le fabricant a défini des valeurs FPF et en même temps la plage correspondante n'a jamais été enregistrée dans la matrice de fusion. Ainsi, si le système fonctionne en mode de fabrication, les variables FPF ne sont probablement pas initialisées.
Un signe de désactivation du mode de fabrication est stocké dans le fichier / home / mca / eom sur MFS, ainsi, lors de la réécriture du flash SPI avec le firmware avec le système de fichiers de base (pour plus de détails, voir
[9] ), la plate-forme est capable de fonctionner à nouveau en mode de fabrication (mais il ne sera pas possible d'écraser FUSES) .
Clé publique OEM
Ainsi, la procédure de configuration des plates-formes Intel est assez complexe et comprend plusieurs étapes. Si le fabricant de l'équipement a violé ou modifié la séquence, la plate-forme est gravement menacée. Même si le mode de fabrication était terminé, le fabricant ne pourrait pas écrire FUSES, ce qui permettrait à un attaquant de le faire pour lui, notant ses valeurs au lieu de la clé pour signer le code de démarrage des modules BootGuard (ACM) et UEFI et permettant ainsi à la plate-forme de démarrer uniquement avec son code malveillant, et sur une base continue. Cela entraînera une perte irrémédiable d'équipement, car la clé frauduleuse sera enregistrée dans la mémoire permanente pour toujours (les détails de cette attaque peuvent être trouvés dans l'étude des sauvegardes des rootkits: Intel BootGuard d'Alexander Ermolov
[8] ).
Dans les nouveaux systèmes (Apollo Lake, Gemini Lake, Cannon Point) dans FPF, non seulement la clé de BootGuard est stockée, mais également la clé publique OEM (ou plutôt SHA-256 de la clé publique OEM RSA), sur laquelle reposent plusieurs mécanismes de protection ME. Par exemple, une section flash SPI spéciale appelée SMIP (Signed Master Image Profile) stocke les sangles PCH spécifiques au fabricant (configuration matérielle PCH). Cette section est signée sur une clé, SHA-256 à partir de laquelle est placée dans un fichier spécial sur flash SPI. Ce fichier est appelé oem.key, situé dans la section FTPR et contient diverses clés publiques fournies par l'OEM pour signer diverses données. Voici la liste complète des ensembles de données signés par le fabricant, chacun sur une clé unique, pour la plate-forme Cannon Point:
Figure 3. Liste des données de plate-forme CNP OEM signéesLe fichier oem.key lui-même est signé par la clé racine partagée OEM, dont le montant de hachage doit être enregistré dans les FPF.
Figure 4. Signature OEMContourner le verrouillage d'écriture dans la région ME
Jusqu'à récemment (avant Intel Apollo Lake), le firmware Intel ME se trouvait dans une région SPI distincte, qui disposait de droits d'accès indépendants pour le CPU, le GBE et le ME. Ainsi, avec la configuration correcte des attributs d'accès de la part de la CPU (système principal), il n'était pas possible de lire ou d'écrire le firmware ME. Cependant, les contrôleurs SPI de chipset Intel modernes ont un mécanisme Master Grant spécial. Cette technologie attribue à chaque maître SPI une partie strictement définie du flash SPI, ce maître possède sa région, quels que soient les droits d'accès spécifiés dans le descripteur SPI. Chaque master a la possibilité de donner accès (en lecture ou en écriture) à son (et uniquement à sa) région à un autre master, comme il le souhaite.
Figure 5. Extrait de documentation Intel décrivant le SPI Master GrantAinsi, même si l'hôte spécifie une interdiction d'accès à la région ME SPI à partir de l'hôte, ME peut toujours fournir l'accès à ses données. À notre avis, cela a été fait pour permettre la mise à jour du micrologiciel Intel ME en contournant l'algorithme standard.
Remplacer la protection Flash de la région ME hôte
Dans le micrologiciel Intel ME, une commande spéciale HECI est implémentée, qui vous permet d'ouvrir l'accès en écriture à la région SPI ME à partir du CPU. Il est appelé HMR FPO (Host ME Region Flash Protection Override). Dans l'une de nos études précédentes, nous avons décrit cette commande en détail [5]. Elle a plusieurs fonctionnalités.
Après avoir reçu la commande HMR FPO, le micrologiciel n'ouvrira l'accès à sa région
qu'après un redémarrage. Le ME lui-même fournit également une protection: la commande n'est acceptée que pendant la période d'exécution du BIOS UEFI, jusqu'au moment dit de fin de publication (EOP). EOP est une autre commande HECI que le BIOS UEFI envoie avant de transférer le contrôle au système d'exploitation (ExitBootServices). Dans certaines configurations du BIOS, vous pouvez trouver une option qui permet d'envoyer la commande HMRFPO à l'EOP.
Figure 6. Ouverture de la région ME dans le BIOSAprès avoir reçu l'EOP, le micrologiciel ME ignore le HMR FPO, renvoyant l'état correspondant.
Mais cela ne se produit qu'après l'achèvement du mode de fabrication . Ainsi, le micrologiciel ME en mode de fabrication accepte HMR FPO
à tout moment, quelle que soit la fin de la publication . Si le fabricant n'a pas fermé le mode de fabrication, un attaquant (officiellement, cela nécessite des droits d'administrateur, mais même le noyau du système d'exploitation ne peut pas initialement remplacer le micrologiciel ME) peut modifier le micrologiciel ME à tout moment. À ce stade, l'attaquant peut écraser l'image ME, par exemple, pour exploiter la vulnérabilité INTEL-SA-00086. Cela soulève la nécessité d'un redémarrage, mais ce n'est pas un obstacle sur presque toutes les plates-formes, à l'exception du MacBook. C'est
sur les ordinateurs Apple qu'il y a une vérification supplémentaire dans UEFI, qui est effectuée au moment du démarrage et empêche le démarrage du système si la région ME est ouverte à l'aide de HMRFPO. Cependant, comme nous le montrerons plus loin, ce mécanisme de protection est surmonté si le micrologiciel ME fonctionne en mode de fabrication.
Redémarrer ME sans redémarrer le processeur principal
Dans les ordinateurs modernes, il existe plusieurs options pour redémarrer la plate-forme. Parmi eux sont documentés: redémarrage global et redémarrage uniquement du CPU principal (sans redémarrage ME). Cependant, s'il existe un moyen de redémarrer le ME
sans redémarrer le processeur principal (après avoir également exécuté la commande HMRFPO), l'accès à la région s'ouvrira et le système principal continuera de fonctionner.
Figure 7. Contrôle du type de redémarrageEn examinant les modules internes du firmware ME, nous avons constaté qu'il existe une commande HECI (
"80 06 00 07 00 00 0b 00 00 00 03 00" , pour plus de détails sur l'envoi de commandes, voir [
5 ]) pour redémarrer uniquement (!) Le noyau Intel ME, qui en mode de fabrication peut également être envoyé à tout moment, même après EOP.
Figure 8. Liste des désassembleurs d'une fonction qui traite les commandes de rechargement ME HECIAinsi, l'attaquant, après avoir envoyé ces deux commandes HECI, ouvre la région ME et peut y écrire toutes les données sans redémarrer la plateforme . Dans ce cas, le contenu du descripteur SPI n'a pas d'importance, c'est-à-dire que les attributs de protection corrects des régions SPI ne protègent pas le micrologiciel ME contre toute modification si le système fonctionne en mode de fabrication.
Nous avons analysé plusieurs plateformes de différents fabricants. Parmi eux se trouvaient des ordinateurs portables Lenovo et Apple MacBook Pr®. Dans les ordinateurs examinés de la gamme Yoga et ThinkPad, nous n'avons trouvé aucun problème associé au mode de fabrication, mais
les ordinateurs portables Apple basés sur des chipsets Intel fonctionnent en mode de fabrication . Après avoir transféré ces informations à Apple, cette erreur (CVE-2018-4251) a été corrigée dans la mise à jour du système d'exploitation macOS High Sierra 10.13.5.
Opération locale INTEL-SA-00086
Ainsi, en utilisant la vulnérabilité CVE-2018-4251, un attaquant pourrait écrire d'anciennes versions du firmware ME contenant la vulnérabilité INTEL-SA-00086, et en même temps, il n'avait besoin ni d'un programmeur SPI ni d'un accès au cavalier HDA_SDO (c'est-à-dire un accès physique). Ainsi, le vecteur le plus dangereux - local - de cette vulnérabilité est réalisé (l'exécution de code arbitraire dans le firmware ME). Il est à noter que dans les explications du bulletin de sécurité INTEL-SA-00086, Intel ne mentionne pas le mode de fabrication ouvert comme moyen d'exploiter cette vulnérabilité localement, sans accès physique, mais dit seulement que l'exploitation locale n'est possible que si l'accès aux régions SPI est mal configuré ce n'est pas vrai. Pour protéger les utilisateurs, nous avons décidé de décrire comment vérifier la disponibilité du mode de fabrication et comment le désactiver.
Comment se protéger
Le package d'utilitaires système pour les développeurs d'équipements basés sur les chipsets et les processeurs Intel (Intel System Tools) comprend l'utilitaire MEInfo (TXEInfo, SPSInfo pour les plates-formes mobiles et serveurs, respectivement), qui est conçu pour recevoir des informations de diagnostic avancées sur l'état actuel du firmware du moteur de gestion et l'ensemble de la plateforme dans son ensemble. Nous avons démontré cet utilitaire dans l'une de nos études précédentes sur la désactivation de ME et le mode HAP (High Assurance Platform) non documenté [
6 ]. Cet utilitaire, appelé avec l'indicateur –FWSTS, fournit une description détaillée des registres d'état HECI et signale l'état du mode de fabrication (le 4e bit du registre d'état FWSTS est défini pour indiquer que le mode de fabrication est actif).
Figure 9. Exemple de sortie de l'utilitaire MEInfoNous avons également développé un programme [
7 ], avec lequel vous pouvez vérifier l'état du mode de fabrication si l'utilisateur n'a pas accès à Intel ME System Tools pour une raison quelconque.
Figure 10. Un exemple du script mmdetectLa question se pose de savoir comment terminer indépendamment le mode de fabrication s'il s'avérait que le fabricant ne l'avait pas fait. Pour terminer le mode de fabrication, l'utilitaire FPT dispose d'une option spéciale, –CLOSEMNF, qui, en plus de son objectif principal, vous permet également de définir les droits d'accès recommandés aux régions flash SPI dans le descripteur.
Figure 11. Résultat de l'utilitaire FTP avec l'option –CLOSEMNFDans cet exemple, nous avons utilisé le paramètre NO de l'option –CLOSEMNF afin de ne pas redémarrer la plate-forme, ce qui est effectué par défaut immédiatement après la fin du mode de fabrication.
Conclusion
Nos recherches montrent que le problème du mode de fabrication du micrologiciel Intel ME existe, et même les grands fabricants comme Apple sont capables de faire des erreurs lors de la configuration des plates-formes Intel. Pire encore, il n'y a pas d'information publique à ce sujet et les utilisateurs finaux ne sont même pas conscients d'un problème aussi grave qui pourrait entraîner la perte d'informations confidentielles, l'émergence de rootkits inamovibles et des dommages irréparables à l'équipement.
De plus, nous soupçonnons que la possibilité de redémarrer ME sans redémarrer le processeur principal peut entraîner d'autres problèmes de sécurité en raison des états BIOS / UEFI et ME non synchronisés.
Auteurs: Mark Ermolov et Maxim Goryachiy
[1]
Mise à jour du micrologiciel critique du moteur de gestion Intel, Intel-SA-00086[2]
GitHub - chipsec / chipsec: Framework d'évaluation de la sécurité de la plateforme[4]
Micrologiciel OpenSource rapide, sécurisé et flexible, Coreboot[5]
Mark Ermolov, Maxim Goryachy, Comment devenir l'unique propriétaire de votre PC, PHDays VI, 2016[6]
Mark Ermolov, Maxim Goryachy, Désactiver Intel ME 11 via le mode non documenté, blog de Positive Technologies[7]
Outils de détection du mode de fabrication Intel ME[8]
Alexander Ermolov, Sauvegarde des rootkits: Intel BootGuard[9]
Dmitry Sklyarov, Intel ME: système de fichiers Flash. Expliqué