ROMbleed, une nouvelle vulnérabilité hardware dévastatrice

Featured image

Stupeur et consternation, hier, au SOC de notre agence gouvernementale préférée, alors qu’une équipe internationale de chercheurs publie une nouvelle vulnérabilité matérielle catastrophique, assortie du maintenant traditionnel logo sexy et du petit surnom qui va bien.

L’attaque ROMbleed, comme son nom l’indique, permet à un attaquant de lire directement le contenu de la ROM d’une machine, en contournant toutes les protections du système d’exploitation.

Cette attaque est rendue possible par une successions de techniques d’exploitation permettant de créer des conditions favorables. La chaîne finale que nous vous présentons ici a été mise au point grâce à l’utilisation de Z3 pour trouver un modèle d’attaque réalisable en pratique.

Récupération des bits de la ROM

ROMbleed s’appuie sur des techniques existantes pour récupérer directement les bits stockés sur un module de ROM. Le processus consiste a découper l’enveloppe du circuit intégré, puis à le placer sous vide, pour ensuite vaporiser différents endroits du circuit avec un laser. Les vapeurs sont ensuite passées dans un spectromètre de masse, ce qui permet d’identifier avec précision le dopage P ou N du silicium sur une partie donnée du circuit.

À cause de la fiabilité limitée du processus, il est nécessaire de répéter le processus une vingtaine de fois pour obtenir une lecture fiable des bits de la ROM, ce qui pose une première difficulté à contourner, étant donné que ce processus détruit complètement la ROM originale.

Compromission de la chaîne d’approvisionnement

Pour obtenir une vingtaine de ROMs identiques, les chercheurs ont développé une technique pour compromettre la chaîne d’approvisionnement, en soudoyant les directeurs de l’usine responsable de la production des puces. La corruption peut être aisément réalisée, pour autant que l’attaquant dispose de fonds suffisants. Nous reviendrons sur la manière d’obtenir ces fonds plus loin dans cet article.

Une deuxième difficulté se pose alors : il est nécessaire d’identifier avec précision le modèle de composant ROM, pour savoir quelle usine compromettre.

Infection du noyau avec une porte-arrière1 universelle

Pour identifier avec précision l’usine cible, les chercheurs ont développé une porte-arrière universelle. Basée sur le module câble-garde2, ce composant logiciel s’exécute dans l’espace noyau sous le système d’exploitation Linux, et est capable de former un réseau pair-à-pair pour traverser boîtes de traduction d’adresses et murs de feu. En utilisant ce composant, l’attaquant peut alors contrôler le système à distance avec un niveau de privilège élevé, et utiliser divers appels bas niveau pour identifier le modèle exact de carte mère et les composants ROM présents sur le système.

Déploiement de la porte-arrière noyau par compromission du compilateur C

L’utilisation d’une telle porte-arrière peut paraître comme difficilement réalisable en conditions réelles. Les chercheurs réutilisent une ancienne technique, initialement proposée par Nique fils de Thomp3 dans son fameux papier séminal « Reflets sur la confiance confiante »4 ; un fragment de code malveillant est intégré au compilateur C. Ce fragment est capable de s’auto-reproduire pendant que le compilateur se soulève par ses bottes ; il est également capable de reconnaître le code du noyau pendant sa compilation, et d’y insérer la porte-arrière.

En pratique, cette attaque est déployée encore une fois en soudoyant les mainteneurs de distributions responsables de l’empaquetage du compilateur C. Ceci nécessite également l’accès à des fonds suffisants.

Obtention des fonds nécessaires

Pour couvrir le coût financier de deux des étapes de l’attaque, les chercheurs proposent une technique innovante consistant à voler des fonds en cryptomonnaie à des opérateurs de rançongiciels. En pratique, une ferme de machine virtuelles Windows, couplée a une solution d’automatisation de navigateurs Web, pointée vers un ensemble aléatoire de sites pornographiques, permet de collecter rapidement des échantillons de rançongiciels divers ; un système de traitement automatique d’information textuelle extrait alors les adresses utilisées par les cybercriminels pour recevoir l’argent. Il suffit alors de détourner les fonds concernés.

Utilisation d’un ordinateur quantique pour casser ECDSA

Le vol de cryptomonnaie pose une difficulté supplémentaire en conditions réelles. Pour résoudre ce problème, les chercheurs ont imaginé une technique novatrice reposant sur le cassage des signatures électroniques ECDSA. Casser ces signatures permet d’injecter facilement de fausses transactions dans la chaîne de blocs Chibipièce5. Cette étape peut facilement être réalisée grâce à l’utilisation d’un ordinateur quantique.

En résumé, l’attaque passe par les quelques étapes simples suivantes :

  1. Casser ECDSA avec un ordinateur quantique
  2. Voler les fonds nécessaires au méfait
  3. Corrompre les mainteneurs pertinents pour leur faire déployer une version troyennée de gcc
  4. Le cheval de Troie dans gcc insère une porte-arrière universelle dans le code du noyau
  5. La porte-arrière permet d’invoquer dmidecode à distance pour identifier le modèle de la carte mère
  6. Utiliser les fonds restants pour obtenir discrètement une vingtaine de copies du même modèle
  7. Utiliser un microscope électronique pour lire le contenu de la ROM

L’exercice « inventer un ordinateur quantique » est laissé en exercice au lecteur.

Cette vulnérabilité a été assignée le numéro PVE-2019-0001.

  1. traduction officielle de l’ANSSI de l’anglais « backdoor »

  2. traduction officielle de l’ANSSI de l’anglais « Wireguard »

  3. traduction officielle de l’ANSSI de « Ken Thompson »

  4. traduction officielle de l’ANSSI de « Reflections on trusting trust »

  5. traduction officielle de l’ANSSI de l’anglais « Bitcoin »