Site WWW de Laurent Bloch
Slogan du site

ISSN 2271-3905
Cliquez ici si vous voulez visiter mon autre site, orienté vers des sujets moins techniques.

Pour recevoir (au plus une fois par semaine) les nouveautés de ce site, indiquez ici votre adresse électronique :

NoSuchCon 2014, de plus en plus fort
à l’Espace Oscar Niemeyer, place du Colonel Fabien à Paris
Article mis en ligne le 25 novembre 2014
dernière modification le 8 décembre 2014

par Laurent Bloch

L’excellente conférence internationale de sécurité informatique NoSuchCon 2014 s’est tenue du 19 au 21 novembre à Paris, les actes complets sont en ligne ici. Comme les années précédentes, une vingtaine d’orateurs, pour la plupart très jeunes, venus de différents pays européens et d’outre-Atlantique ont présenté de façon passionnée et approfondie (45 minutes par présentation) des sujets inédits et novateurs.

La synthèse de programme au secours de la rétro-ingénierie

Au cours d’un exposé de haute volée théorique dédié à la mémoire d’Alexandre Grothendieck et de Radhia Cousot [1] Rolf Rolles a présenté des méthodes et des exemples d’application de la synthèse de programme à partir d’une spécification pour reconstituer le fonctionnement d’un automate matériel ou logiciel. La théorie au cœur de ces méthodes répond au nom de problème SMT (Satisfiability Modulo Theories), et elle permet, si je puis me permettre un raccourci très sommaire, de calculer un programme à partir de la spécification de son comportement désiré, et de vérifier ensuite que le programme répond effectivement au désir. La difficulté réside bien sûr dans l’écriture de l’objet du désir dans un langage intermédiaire (Intermediate Representation, IR). Une autre approche consisterait à partir de l’énumération de tous les programmes possibles et de les comparer successivement au résultat voulu. Les démarches praticables se situent à mi-chemin de ces deux extrêmes.

Ce qui m’a fasciné dans l’exposé de Rolf Rolles, ce fut le passage sans transition de ces considérations très abstraites et théoriques à du langage machine pur et dur : synthèse d’un émulateur de CPU Intel x86 pour machine virtuelle à partir des spécifications des manuels Intel (souvent imprécises ou franchement erronées), génération d’un désobscucisseur (deobfuscator) de code, etc. J’ai noté une définition séduisante de ce qu’est une hypothèse : l’expression en langage intermédiaire (IR) de l’égalité entre une valeur dans un registre et une expression qui pourrait l’avoir générée.

Quel est le lien avec la rétro-ingénierie ? À partir d’un code machine binaire, un désassembleur permet d’obtenir un texte en assembleur, que le désobscurcisseur permet de rendre relativement compréhensible, notamment en éliminant les zones de texte jamais exécutées ou dupliquées.

Les planches sont assez détaillées et donnent des exemples de code machine, de code assembleur et de code en représentation intermédiaire (IR). Plus loin on trouve aussi un décodeur métamorphique qui laisse espérer de grandes voluptés théoriques et pratiques.

Your Q is my Q

MQ (Message Queue) désigne une famille de services de messagerie inter-applicative (ou intergiciels, ou MOM pour Message-Oriented Middleware), c’est-à-dire qui permettent la communication entre différentes applications, via l’utilisation de files d’attente, par passage de messages. Ainsi peuvent communiquer des programmes écrits dans des langages variés.

Parmi les intergiciels (middlewares) qui permettent l’interopérabilité entre applications homologues (de même nature), on peut distinguer deux grandes familles :

 les intergiciels qui permettent l’invocation synchrone de fonctions et méthodes, parmi lesquels on trouve la famille des request brokers, avec CORBA ou encore DCOM.
 les intergiciels d’échange asynchrones, qui sont principalement à base de messages, ce sont les MOMs, les Message Oriented Middleware.

Un intergiciel est davantage qu’un simple protocole d’appel des services offerts par une application, et typiquement RPC, RMI ou bien SOAP, tous également synchrones, ne sont pas vraiment considérés comme des intergiciels (cf. projet Smile->http://middleware.smile.fr/Concepts-des-moms-et-jms/Qu-est-ce-qu-un-middleware).

Georgi Geshev a étudié un certain nombre de MOMs basés sur JMS (Java Message Service), qui exhibent des interfaces commodes mais potentiellement vulnérables : Java Management Extension (JMX) procure des fonctions comparables à celles offertes par SNMP, Java Remote Method Invocation (RMI) est un système de RPC, Java Debug Wire Protocol (JDWP) offre les mêmes commodités (et les mêmes dangers !) que gdb.

Georgi Geshev nous a démontré plusieurs possibilités d’intrusion, d’attaque par interposition (Man in the Middle) et de détournement avec ActiveMQ, le MOM libre de la fondation Apache.

Attaques par les courants porteurs (CPL)

Sébastien Dudek nous a présenté les systèmes de protection des dispositifs de réseau par courants porteurs en ligne (CPL), qui se répandent rapidement en France depuis que Free et Bouygues Télécom les distribuent avec leurs Freebox et Bbox.

Ces dispositifs ont fait des progrès depuis l’époque de leurs débuts, où ils avaient mauvaise réputation. Aujourd’hui, si la communication sur le câble Ethernet qui relie le boîtier CPL à l’appareil connecté est en clair, les communications de boîtier CPL à boîtier CPL sur le circuit électrique sont chiffrées selon le protocole AES, qui est considéré comme robuste. Il faut néanmoins savoir que, contrairement à une idée répandue, le compteur électrique d’un appartement n’interrompt pas les communications CPL, et que vos voisins de palier reçoivent bien vos trames (chiffrées heureusement).

Sébastien Dudek nous a montré comment démonter et attaquer le matériel, en s’aidant des photos trouvées en abondance sur LeBonCoin.fr et sur eBay, qui fournissent aimablement des exemples de Direct Access Key (DAK) d’où peuvent se déduire des expressions régulières pour générer des attaques plus efficaces que la force brute.

L’ordinateur quantique en pratique ?

Renaud Lifchitz, qui a acquis la renommée en démontrant la vulnérabilité des cartes bancaires sans contact par le protocole NFC, venait cette année nous exposer l’état de l’art de l’informatique quantique. Si les perspectives pour l’informatique en général semblent encore assez nébuleuses, parce que par définition un état quantique n’est pas susceptible de copie, or un traitement informatique ne cesse de copier et recopier des données, par contre la génération et la distribution quantiques de clés semblent bien avancées, justement parce qu’il ne faut pas trop les copier. Renaud Lifchitz nous annonce que d’ici 10 à 25 ans la cryptographie asymétrique telle que pratiquée actuellement (basée sur la factorisation ou sur le logarithme discret) sera entièrement cassée. Mais les cryptographes y ont pensé et ils développent maintenant des cryptosystèmes « post-quantum » dans le sens où l’accès à un ordinateur quantique ne facilite pas le travail de l’attaque. Dans cette catégorie on trouve la cryptographie à base de codes ainsi que la cryptographie multivariée par exemple (précisions fournies par Alexandre Anzala-Yamajako, ingénieur cryptographe chez Thalès Communications).

Le dialogue entre physiciens et informaticiens achoppe toujours sur le même malentendu : les physiciens cherchent à réaliser des instruments, les informaticiens des systèmes. Une fois que l’on a réalisé un appareil quantique génial qui produit à grande vitesse des résultats intéressants, reste à en extraire ces résultats pour les propager dans un système plus vaste, et la question n’est pas aussi triviale que souvent l’imaginent les physiciens. C’est aussi le problème des circuits supra-conducteurs, pour des raisons analogues.

Windows 8.1 Kernel Patch Protection Defeated

Andrea Allievi travaille chez Cisco et il a exploré le noyau Windows dans ses moindres recoins. Concepteur du premier Bootkit UEFI en 2012, c’est un virtuose de l’assembleur x86 et du code binaire qui en résulte. Aussi, lorsqu’il nous assure que le noyau Windows 8.1 est beaucoup plus robuste et mieux protégé que ses prédécesseurs, nous pouvons lui faire confiance, et d’ailleurs il nous le montre.

La fonction de Patchguard (Kernel Patch Protection) est de prémunir le noyau Windows de toute modification non autorisée. Tout une infrastructure de signature de code et de supervision d’opérations asynchrones est destinée à empêcher les franchissements malfaisants de cette barrière.

C’est en effectuant la rétro-ingénierie du rootkit Uroburos (qui ne fonctionne plus depuis Windows 8) qu’Andrea Allievi a approfondi sa connaissance du noyau et de ses mécanismes de protection, et qu’il a réussi à créer un pilote noyau qui contourne les chausse-trappes habilement disposées par les ingénieurs du noyau Windows. Son exposé est un cours d’architecture du noyau, avec le désassemblage de morceaux choisis particulièrement savoureux au palais des connaisseurs : KeInitAmd64SpecificState, CalculateNtChunkPgKey, PatchguardMainCheckRoutine par exemple.

Mais là où le travail d’Andrea Allievi devient proprement diabolique, c’est lorsqu’il détourne Patchguard pour le faire protéger son propre code d’attaque, et au passage pour éliminer les programmes des attaquants ordinaires, en re-signant un de ses buffers au moyen d’une clé détournée.

En bref, Patchguard est mort, mais avec les honneurs.

Et il faut dire aussi qu’après une période de stagnation des défenses propice aux attaquants, les logiciels du commerce ont fini par s’engager dans un processus d’amélioration qui place plus haut la barre à franchir par les assaillants.

Ouverture de serrures électroniques

Braden Thomas a longtemps travaillé pour Apple, il est maintenant Senior Research Scientist chez Accuvant, et sa présentation portait sur la rétroingénierie du contrôleur MSP430 incorporé à des serrures électroniques, de façon à pouvoir les ouvrir. Il s’agit de serrures de maisons, mais qui fonctionnent comme des serrures de voiture, et dont la sûreté repose sur une infrastructure cryptographique. Le propriétaire peut ouvrir sa porte au moyen d’une télécommande ou d’une application Android sur son téléphone portable, mais comme il faut aussi que le vendeur puisse ouvrir la porte si le client a perdu sa clé, toutes les serrures installées par le même serrurier peuvent être ouvertes avec une même clé, ce qui ouvre des horizons fructueux à l’attaquant qui aurait réussi à se la procurer. En principe cette clé maîtresse est inaccessible au client (sinon chacun pourrait cambrioler ses voisins), elle est réservée au serrurier, mais elle est physiquement présente dans chaque télécommande, bien enfouie, mais présente, et Braden Thomas s’est promis de l’en extraire.

La protection de base de ce type de contrôleur repose souvent sur le claquage du fusible de protection du dispositif Joint Test Action Group (JTAG) qui contrôle l’accès au microprogramme. Notre auteur s’est employé à contourner cette protection, ce qui lui a demandé des attaques physico-chimiques pour atteindre le contrôleur et sa mémoire EEPROM, puis l’utilisation du flash de son appareil photo pour effacer le contenu de cette mémoire. Après des mois de travail il a pu extraire le microprogramme, en effectuer la rétro-ingénierie et accéder à la clé secrète désirée, ce qui pourrait lui permettre de cambrioler des milliers de maisons, mais comme il est honnête il a adressé son rapport aux industriels concernés afin qu’ils corrigent leur architecture.

La morale de cette histoire est qu’il ne faut pas enregistrer de secrets cryptographiques dans la mémoire Flash de micro-contrôleurs du commerce !

Créer une porte dérobée de qualité pour un système cryptographique

Jean-Philippe Aumasson travaille en Suisse pour Kudelski Security. En exergue de son exposé : « Vous ne vous intéressez peut-être pas aux portes dérobées, mais elles s’intéressent à vous ». Depuis les révélations d’Edward Snowden cette vérité est mieux connue.

La recherche universitaire et industrielle sur les portes dérobées est à peu près inexistante. Par contre les autorités gouvernementales de diverses contrées s’en occupent activement, et comme le souligne JP Aumasson, une porte dérobée gouvernementale est susceptible de devenir très facilement une porte dérobée criminelle. La question se pose alors de comment créer une porte dérobée de confiance.

Qu’est-ce qu’une porte dérobée ? « Un dispositif (ou le défaut d’un dispositif) qui permet un accès subreptice à des données », ou « un moyen non documenté d’accéder à un système ».

Quelles sont les qualités souhaitables d’une porte dérobée ?

 indétectable ;
 utilisable uniquement par son propriétaire ;
 réutilisable à volonté ;
 non modifiable ;
 simple ;
 robuste à long terme (forward-secure).

JP Aumasson envisage essentiellement les portes dérobées dans les systèmes cryptographiques, et il insiste sur le rôle de certaines constantes parmi leurs paramètres. Il est souvent possible d’introduire dans un système des paramètres qui l’affaiblissent sans que cela soit facilement détectable : valeurs d’exposants trop faibles, chiffres figés à une valeur fixe, vérifications incomplètes de certificats. JP Aumasson évoque les procédés matériels d’affaiblissement de générateurs de nombres pseudo-aléatoires imaginés par MM. Becker, Regazzoni, Paar et Burleson et déjà mentionnés ici : de tels sabotages de processeurs sont très difficiles à détecter, mais MM. Sugawara, Suzuki, Fujii, Tawa, Hori, Shiozaki et Fujino en ont réussi la rétro-ingénierie, ce que l’on ne peut qu’applaudir.

Une leçon à tirer de ces travaux est qu’il faut implanter les générateurs de nombres pseudo-aléatoires à des emplacements cachés, par exemple dans des circuits spécialisés de type FPGA, afin d’en rendre la rétro-ingénierie plus difficile. Mais ce n’est bien sûr qu’un petit aspect de la protection contre les attaques par des portes dérobées.

Pour conclure

Comme les années précédentes, NoSuchCon fut un bain de jouvence dans tous les sens du terme. J’y ai entendu et rencontré quantité de jeunes ingénieurs et chercheurs enthousiastes et brillants, qui n’hésitent visiblement pas à passer leurs nuits et leurs week-ends à transpirer sur des programmes en assembleur et des codes binaires incompréhensibles, et à en être passionnés. Le salut de notre industrie européenne dans le cyberespace viendra plus sûrement d’eux que des techniques débiles de chefferie de projet, de management des risques et de reporting dont on nous rebat les oreilles. Parce que, eux, ils font de vraies choses, et pas de l’imitation de travail.