
Preuve de concept JTAG du moteur de gestion Intel
Toutes les informations sont fournies à des fins éducatives uniquement. Suivez ces instructions à vos propres risques. Ni les auteurs ni leur employeur ne sauraient être tenus responsables de tout dommage ou perte direct(e) ou indirect(e) résultant de l'action ou de l'inaction d'une personne ou d'une organisation sur la base des informations contenues dans cette page.
Introduction
Logiciels requis
Génération de la charge utile
Génération du jeton de déverrouillage
Préparation de l'image SPI Flash
Intégration des fichiers dans l'image du firmware
Désactivation de la signature OEM
Construction de l'image du firmware
Démarrage du CPU principal
Écriture de l'image dans la mémoire SPI Flash
Préparation du câble de débogage USB
Application des correctifs aux fichiers de configuration OpenIPC
Déchiffrement des fichiers de configuration OpenIPC
Ajout du cœur LMT à la configuration
Définition de la variable d'environnement IPC_PATH
Vérification initiale du fonctionnement de JTAG
Afficher le thread ME du CPU
Arrêt des cœurs
Débogage ME : démarrage rapide
Lecture de mémoire arbitraire
Lecture de la ROM
Pourquoi TXE ?
Liste des plateformes testées
Auteurs
Licence
La vulnérabilité INTEL-SA-00086 permet d'activer le JTAG pour le cœur de l'Intel Management Engine. Nous avons développé notre [PoC JTAG][8] pour la plateforme Gigabyte Brix GP-BPCE-3350C. Bien que nous recommandions aux chercheurs de utiliser la même plateforme, les plateformes d'autres fabricants équipées du chipset Intel Apollo Lake devraient également prendre en charge le PoC (pour la version TXE 3.0.1.1107).
La vulnérabilité INTEL-SA-00086 implique un débordement de tampon (buffer overflow) lors du traitement d'un fichier stocké sur MFS (le [système de fichiers interne de ME][6]). Le chemin complet du fichier est /home/bup/ct. Vous devrez l'intégrer dans le firmware ME à l'aide de l'Intel Flash Image Tool (FIT), l'un des outils système Intel fournis par Intel aux OEM de matériels basés sur les chipsets Intel PCH. Voici la structure du répertoire racine du package Intel System Tools :

Les utilitaires Intel ME (TXE, SPS) System Tools ne sont pas destinés aux utilisateurs finaux — vous ne les trouverez donc pas sur le site officiel d'Intel. Cependant, certains OEM les publient dans le cadre de mises à jour logicielles accompagnant les pilotes de périphériques. Ainsi, pour intégrer notre PoC, vous avez besoin d'Intel TXE System Tools version 3.x, que l'on peut trouver en ligne.
Vous devez installer Intel System Studio, dont une version d'essai peut être téléchargée depuis le site d'Intel. Dans nos expériences, nous avons utilisé Intel System Studio 2018.
Le PoC cible la version 3.0.1.1107 du firmware Intel TXE. L'image SPI Flash du Gigabyte GB-BPCE-3350C version F5 contient la version de firmware nécessaire.
Tous nos scripts sont écrits en Python. Nous recommandons d'utiliser Python 2.7. Les scripts nécessitent également le paquet pycrypto. Pour installer pycrypto, exécutez la commande suivante :
pip install pycrypto
Cet utilitaire n'est nécessaire que si vous devez démarrer le CPU.
L'EFI Human Interface Infrastructure (HII) est un mécanisme spécial permettant de créer une interface utilisateur dans l'UEFI, ainsi que de traiter et de gérer les saisies utilisateur. EFI HII identifie les valeurs par défaut de toutes les options, y compris celles qui sont masquées. Dès que l'option liée à DCI est trouvée, elle peut être activée pour la configuration par défaut, et DCI peut être activé en restaurant les paramètres d'usine du BIOS. Pour démarrer le CPU principal, vous avez besoin d'AMI BIOS Configuration Program version 5.xx, que l'on peut également trouver en ligne.
Exécutez le script me_exp_bxtp.py :
me_exp_bxtp.py -f <file_name>
Le script génère les données nécessaires et les exporte vers le fichier spécifié (indiquez soit le chemin complet du fichier, soit, dans le répertoire courant, simplement un nom, ct.bin par défaut). Ce fichier sera utilisé plus tard par FIT.
Exécutez le script me_utok_bxtp.py :
me_utok_bxtp.py -f <file_name>
Le script génère les données nécessaires et les exporte vers le fichier spécifié (indiquez soit le chemin complet du fichier, soit, dans le répertoire courant, simplement un nom, utok.bin par défaut). Ce fichier sera utilisé plus tard par FIT.
Ignorez cette étape si vous n'avez pas besoin de démarrer le CPU.
Pour activer l'option DCI Enable, exécutez l'utilitaire AMIBCP et utilisez-le pour ouvrir l'image du firmware SPI fournie avec votre plateforme. Pour le Gigabyte Brix GP-BPCE-3350C, ouvrez le fichier téléchargé depuis le lien Gigabyte indiqué ci-dessus (chemin du fichier image dans l'archive : F5/image.bin).

Nous devons maintenant activer l'option HDCIEN dans l'onglet Setup Configuration.
Pour intégrer les fichiers ct.bin et utok.bin, exécutez l'utilitaire FIT (fit.exe) et utilisez-le pour ouvrir l'image du firmware SPI.

Si vous utilisez une autre plateforme matérielle et n'avez pas accès à TXE 3.0.1.1107, vous pouvez télécharger une image SPI Flash pour Gigabyte GB-BPCE-3350C version F5 et extraire la section TXE via FIT. FIT extrait différentes sections de l'image SPI globale (descripteur SPI, firmware UEFI/BIOS, firmware Intel ME et jeton de déverrouillage) lorsque l'image est ouverte et les enregistre dans le dossier *"image_name"/Decomp *.
