FLASH INFORMATIQUE FI



Autopsie d’une attaque, microprogrammation en danger


Attaque informatique sur votre machine à laver



Cyber attack on your washing machine


Laurent KLING


Une menace diffuse

Si on écoute les chantres de la sécurité informatique, une attaque cybernétique globale est imminente, comme la menace soviétique d’une époque heureusement révolue. Ces experts peignent le diable sur la muraille de nos craintes, particulièrement efficace quand le firewall est virtuel.
Souvent, l’informatique est comprise uniquement dans le contexte limité des ordinateurs de bureau, des serveurs et du réseau Internet. En réalité l’informatique est largement plus diffusée, pratiquement chaque objet de la vie quotidienne est basé sur un microcontrôleur qui réalise des opérations logiques ou de régulation. Si votre garagiste branche un appareil de mesure sur votre voiture, c’est par obligation. Une voiture moderne n’est qu’un vaste réseau industriel qui relie ses différents éléments.
Le poids grandissant des véhicules est également provoqué par la profusion d’actuateurs et moteurs électriques en tout genre qui permettent de régler votre rétroviseur, lever vos vitres, laver vos feux de circulation, essuyer vos glaces, verrouiller votre voiture, réguler votre vitesse [1]... Dans le cas d’une automobile, nous sommes souvent démunis face à cette profusion de capteurs et d’intelligences embarqués. L’allumage d’un seul voyant d’erreur sur son tableau de bord entraîne rapidement la consultation de spécialistes. Le diagnostic de plusieurs garagistes dépositaires de la marque peut laisser dubitatif quant à la pièce à changer :

  • la sonde lambda,
  • l’embrayage,
  • la boite de vitesse.

Devant des indications aussi disparates, on peut être tenté de ne rien faire, ce qui entraîne parfois la disparition de l’alerte !
L’intégration du logiciel et du matériel est appelée par le néologisme firmware (microprogrammation). Sur un plan familier, votre machine à laver la vaisselle ou votre cafetière électrique programmable utilisent des microprogrammes embarqués. Pour ces appareils, les fabricants pensent assurer la sécurité par l’opacité des technologies employées. Bizarrement, personne n’évoque le risque d’attaque informatique.

Stuxnet, une attaque réussie sur de la microprogrammation

En août 2010, une société de sécurité située en Biélorussie annonce la découverte d’un ver informatique qui affecte des clients iraniens (un ver est capable de fabriquer par lui-même ses toxines, de se reproduire et de se déplacer). La nouveauté réside dans la combinaison de 3 attaques différentes contre :

  • le système d’exploitation Windows,
  • un contrôle industriel,
  • une régulation de vitesse.

Même processeur, même architecture

Les virus ou les vers utilisent des lacunes provoquées par les concepteurs. En général, ces lacunes sont involontaires et permettent dans les cas les plus graves une exécution d’un code non autorisé. Pour réussir, une attaque doit nécessairement provenir de la conjonction d’un code malin dans une architecture définie. Comme pour le monde vivant, la barrière des espèces évite de nombreuses attaques.
Dans le cas de Stuxnet, l’objectif est de réussir à perturber une opération d’enrichissement de l’uranium dans une centrifugeuse. Pour l’opération d’enrichissement, ces appareils sont mis en cascade pour obtenir une concentration appréciable. Et naturellement, le processus doit se dérouler sur de longues périodes sans interruption ni perturbation. L’infrastructure matérielle est difficile à saboter, la fourniture de pièces défectueuses peut être contournée par un contrôle de qualité élevé. Seule une attaque indirecte peut réussir, elle doit utiliser le maillon faible de l’infrastructure, le logiciel contenu dans le régulateur industriel. L’étage de commande logiciel de contrôle - système de régulation doit être corrompu. Le vecteur d’infection procède en trois étapes :

  • contaminer l’ordinateur hôte,
  • contaminer le logiciel de contrôle,
  • pour finalement contaminer le régulateur industriel. L’analyse de cette attaque est complexe, des chercheurs de Symantec ont écrit dans une étude particulièrement bien détaillée ces trois niveaux d’attaques .
    Pour corrompre l’ordinateur, deux mécanismes conjoints ont été utilisés :
  • une signature électronique usurpée d’un fabricant de matériel de Taiwan,
  • quatre trous de sécurité dans Microsoft Windows, inconnus avant leur utilisation par Stuxnet.

Les deux premiers trous de sécurité ouvrent la porte à l’infection. L’hôte devient lui-même un porteur contagieux capable de transmettre la maladie par l’utilisation de deux nouvelles failles (une réplication sur les points de partage et une exécution par une file d’attente d’impressions). Ensuite, l’infection libère la 2e étape qui consiste à infecter le système de développement du microprogramme du contrôleur industriel qui utilise le langage S7, il inclut un code défectueux ne s’enclenchant que dans des conditions précises.
La dernière étape est l’objectif, modifier le comportement d’un régulateur de vitesse. Dans ce cas, le ver était asservi à distance par une série de serveurs Web, une technique très courante pour la gestion de parc de PC zombie.

Le maillon faible, le régulateur de vitesse

Le centre de la cible est le contrôleur industriel de Siemens S7-300 CPU. Chaque appareil peut commander jusqu’à 6 processeurs de communication CP 342 - 5 contrôlant chacun 31 moteurs.
Une fois le processus d’infection réalisé, la cible identifiée et l’ordre exécuté, l’attaque peut commencer. Sont concernés uniquement des moteurs avec des fréquences de rotation très élevées (de 48’420 t/min à 72’600 t/min). Le résultat est particulièrement désastreux pour un équipement mécanique tournant à ces vitesses :

  • accéléré jusqu’à 84’600 t/min,
  • freiné à 120 t/min,
  • re-accéléré à 63’840 t/min.



L’attaque est une machine à état (processus informatique qui suit différentes étapes) incorporé dans tous les programmes contenus dans ces contrôleurs S7. Elle modifie la fréquence de consignes des moteurs selon un schéma pseudo aléatoire.



Pour reprendre l’analogie avec le monde vivant, cette attaque existe dans la nature :

  • une fourmi est attaquée par un ver parasite,
  • celui-ci modifie le comportement de la fourmi (elle reste immobile au sommet d’une herbe),
  • la vache ingère le brin d’herbe accompagné de son passager clandestin,
  • les larves du ver parasite se développent dans la vache,
  • les larves sont évacuées avec les déchets de la digestion,
  • elles sont ingérées par un escargot,
  • et finalement l’escargot est mangé par une fourmi.

Ce scénario peut sembler être de la Science-Fiction, en fait c’est le contenu d’un article de Frédéric Thomas et Frédéric Libersat dans la revue Pour La Science de mai 2010. 

Une expérience pratique

Dans une vie antérieure, j’ai écrit des microprogrammes, des composants logiciels permettant d’accéder à un matériel. Ce logiciel peut être directement intégré dans l’appareil ou se présenter sous la forme d’un pilote (driver) qui doit être chargé en mémoire pour que le matériel puisse fonctionner.
C’est l’absence de pilote vidéo qui engendre des effets désagréables sur un PC comme une résolution d’écran de 800 x 600 pixels avec 4 bits de couleur. Si les pilotes ou drivers sont généralement livrés avec le matériel, il est parfois nécessaire de les recréer pour disposer d’une fonction supplémentaire.
Par exemple, pour interfacer un contrôleur de communication série, ce circuit intégré se présente comme des registres où chaque bit d’information détermine une fonctionnalité.



Une interface logicielle permet la jonction avec le matériel. Les paramètres doivent être facilement compréhensibles par un programmeur externe (vitesse de transfert, protocole, contrôle des flux,...). Dans l’idéal, ces paramètres doivent être indépendants du matériel. Pour des pilotes, la taille du code est un critère important. Ce problème de taille devient particulièrement aigu quand la mémoire disponible est faible. À mon grand désespoir, le pilote que j’écrivais en assembleur était quatre fois plus long que le code compilé intégré dans l’ordinateur. Intrigué par cette différence, j’ai décompilé ce code binaire original. Malheureusement, cela ne fut pas d’un grand secours, car je ne comprenais pas l’algorithme sous-jacent.
Quelques années plus tard, pour la création d’un pilote de communication synchrone, j’ai eu accès au code source originel et sa simplicité me stupéfiât. Le programmeur partait du même point de départ que moi, les différents paramètres étaient dans un format lisible. Une machine à état transformait ces données dans le codage interne du contrôleur de communication, comme si le concepteur de ce logiciel avait compris la structure de la logique câblée contenue dans la puce.

La seule limite, l’imagination

Notre civilisation nous pousse à une spécialisation de plus en plus grande, un système se décompose dans une multitude de sous-ensembles, processus répétés pour atteindre une dimension fractale. Sur un processeur moderne, le nombre de transistors se compte en milliards, la tentation est forte de cacher des processus directement dans le silicium.
En octobre 2010, un programmeur a découvert que l’exécution d’un code (EDI=9C5A203A) ouvrait des fonctionnalités supplémentaires de déverminage sur des processeurs AMD. L’exécution de ce code est cachée au commun des mortels, car il doit être exécuté avant le démarrage du     BIOS de l’ordinateur, blogs.mail.ru/mail/czernobyl/648A41F5D75615FF.html.
Le nombre de transistors inclus dans un processeur moderne donne le tournis, à titre de comparaison l’Intel 8086 en possédait 29’000 et il permit l’avènement du PC, le cœur du Macintosh était le Motorola 68’000 qui en contenait 68’000. L’ancêtre 6502 de l’Apple II avait ses 3510 transistors.


En conclusion, le problème de la sécurité ne se résout pas par l’opacité des moyens employés et il faut se garder de faire de trop grandes simplifications. Une compréhension fine des mécanismes sous-jacents est toujours possible, la seule limite est l’imagination. Dans ce monde de l’imaginaire, je recommande la lecture du livre qui m’a poussé en 1979 à m’intéresser de plus près aux mécanismes de l’informatique (ce roman contient la première définition d’un ver informatique). Il s’agit de The Shockwave Rider de John Brunner (ISBN-13 : 978-0345467171) dont la version française, Sur l’onde de choc, est malheureusement épuisée.



Glossaire

actuateur :
Système de commande conçu pour engendrer une force capable de produire un mouvement. ]
BIOS (Basic Input Output System) :
microprogrammation permettant l’interfaçage entre un système d’exploitation et les périphériques comme le disque, le clavier et l’écran.
PC zombie :
PC sous contrôle extérieur pour exécuter des activités non prévues par le propriétaire de l’appareil.

[1] « Un véhicule haut de gamme nécessite environ 40 kg de faisceau électrique pour une longueur de plus de deux kilomètres et 1800 interconnexions. » www.educauto.org/Documents/Tech/ANFA-MULTIPLEX/multiplex.pdf.



Cherchez ...

- dans tous les Flash informatique
(entre 1986 et 2001: seulement sur les titres et auteurs)
- par mot-clé

Avertissement

Cette page est un article d'une publication de l'EPFL.
Le contenu et certains liens ne sont peut-être plus d'actualité.

Responsabilité

Les articles n'engagent que leurs auteurs, sauf ceux qui concernent de façon évidente des prestations officielles (sous la responsabilité du DIT ou d'autres entités). Toute reproduction, même partielle, n'est autorisée qu'avec l'accord de la rédaction et des auteurs.


Archives sur clé USB

Le Flash informatique ne paraîtra plus. Le dernier numéro est daté de décembre 2013.

Taguage des articles

Depuis 2010, pour aider le lecteur, les articles sont taggués:
  •   tout public
    que vous soyiez utilisateur occasionnel du PC familial, ou bien simplement propriétaire d'un iPhone, lisez l'article marqué tout public, vous y apprendrez plein de choses qui vous permettront de mieux appréhender ces technologies qui envahissent votre quotidien
  •   public averti
    l'article parle de concepts techniques, mais à la portée de toute personne intéressée par les dessous des nouvelles technologies
  •   expert
    le sujet abordé n'intéresse que peu de lecteurs, mais ceux-là seront ravis d'approfondir un thème, d'en savoir plus sur un nouveau langage.