Des supports matériels pour défendre les logiciels contre les cyberattaques

Attaquables à distance via un réseau internet ou local, les applications logicielles sont la cible privilégiée des cyber-attaquants. Si des méthodes alliant matériel et logiciel sont déjà intégrées aux processeurs les plus récents pour faire face aux cyberattaques, des solutions 100% matérielles par essence inattaquables à distance pourraient bientôt venir défendre nos programmes informatiques. Jean-Luc Danger, chercheur à Télécom ParisTech, travaille sur ces dispositifs invulnérables aux attaques logicielles.

Cet article fait partie de notre dossier Cybersécurité : nouveaux temps, nouveaux enjeux

 

Rien ni personne n’est infaillible, et les logiciels n’échappent pas à la règle. Dans la pratique, il est très difficile de concevoir un programme informatique sans failles. Les logiciels sont donc en première ligne face aux cyberattaques. D’autant plus que les attaques logicielles, contrairement aux attaques matérielles ciblant localement le matériel informatique, peuvent être perpétrées à distance via un port USB ou un réseau internet. Et ces cyberattaques peuvent toucher les particuliers, comme les entreprises. « Par rapport aux attaque logicielles, les attaques matérielles sont beaucoup plus difficiles à exécuter. Elles nécessitent d’être à proximité de la machine ciblée, puis d’observer et de perturber son fonctionnement » explique Jean-Luc Danger, chercheur en systèmes électroniques et numériques à Télécom ParisTech.

Alors quelles sont les solutions pour protéger les logiciels ? « Intuitivement, on peut se dire que si on conçoit des logiciels, comme des antivirus, pour se protéger d’une attaque logicielle, alors ces logiciels de protection peuvent eux-mêmes être la cible d’attaque » précise Jean-Luc Danger. Les dispositifs de protection matériels, inattaquables à distance, pourraient ainsi être une solution efficace pour améliorer la cybersécurité des programmes informatiques face aux attaques logicielles.

Des méthodes hybrides pour contrer les attaques

Un logiciel, ou programme informatique, est une suite d’instruction exécutées séquentiellement. Un programme peut ainsi être représenté sous la forme d’un graphe, où chaque nœud représente une instruction. Ce graphe d’exécution, aussi appelé control flow graph, permet de vérifier que la suite de nœuds exécutés est valide.

supports matériels attaques logicielles

Chaque point symbolise une instruction, les flèches les reliant représentent
la séquence d’exécution de ces instructions.

En cas de cyberattaque, l’attaquant va identifier une faille afin d’injecter du code et intégrer des instructions invalides, ou de réutiliser le code existant pour changer la séquence d’exécution des instructions. Le code malveillant peut par exemple permettre à l’attaquant d’accéder à la mémoire du système ciblé.

supports matériels attaques logicielles

Ici, une attaque par injection de code, avec l’exécution d’une suite invalide d’instructions.

supports matériels attaques logicielles

Dans le cas de l’attaque par réinjection de code, c’est le flux d’exécution
des instructions qui est détourné.

« Il existe de nombreuses protections logicielles : des antivirus, qui détectent les programmes infectés, ou des solutions pour rendre illisible le code, des programmes qui vérifient l’intégrité de ce control flow graph… » explique Jean-Luc Danger. Certaines solutions hybrides, à la fois matérielles et logicielles, sont déjà intégrées aux processeurs actuels. Par exemple, des unités de gestion mémoires (ou Memory Management Unit), permettent à chaque programme d’avoir une plage mémoire dédiée et protégée par une adresse virtuelle, limitant les dégâts en cas de cyber-attaques. Par ailleurs, les processeurs peuvent être équipés d’un support de virtualisation, sur lequel une machine virtuelle peut être installée, avec son propre système d’exploitation. En cas d’attaque logicielle sur un premier système, la machine virtuelle pourra prendre le relais.

Malgré le fait que ces solutions soient matérielles, puisqu’elles impliquent une modification physique du processeur, elles ont besoin d’un minimum de configuration et d’écriture logicielles pour fonctionner, les rendant alors vulnérables aux attaques logicielles. Néanmoins, des solutions exclusivement matérielles se développent pour faire face aux cyberattaques.

Piles d’ « assiettes » de mémoire et signatures numériques

« Il existe déjà une solution 100% matérielle qui sera bientôt intégré aux processeurs Intel, ce sont les shadows stacks, ou piles matérielles, des dispositifs intéressant dans le cadre de cyberattaques visant à pirater des sous-programmes  » explique Jean-Luc Danger.

En effet, dans un programme une instruction peut renvoyer à une autre suite d’instructions, qui constituent alors un sous-programme. Une fois ce sous-programme exécuté, les données sont renvoyées à leur point de départ pour réintégrées la chaîne d’instruction du programme principal : un moment critique, où une cyberattaque peut détourner les données et les envoyer vers une instruction anormale.

supports matériels attaques logicielles

Dans le cas où un sous-programme s’exécute
(ici, la chaîne constituée de deux nœuds, à droite du programme principal),
les données peuvent être renvoyées à la mauvaise instruction suite à une cyberattaque

C’est pour faire face à ce type d’attaque que la shadow stack intervient. Ce dispositif de « pile » où la mémoire est stockée matériellement sous la forme d’ « assiettes empilées » permet de garder une trace matérielle des nœuds de départ et d’arrivée du sous-programme. « L’adresse du nœud est « empilée » sur la première « assiette » lorsque le sous-programme s’exécute, et est « dépilée » lorsque cette exécution est terminé » précise Jean-Luc Danger. Impossible ainsi de détourner le sous-programme par une attaque logicielle, les points de départ et d’arrivée du sous-programme étant inscrits matériellement.

« À Télécom ParisTech, conjointement avec la spin-off Secure-IC, nous mettons au point HCODE, un type de protection 100% matérielle complémentaire aux shadows stacks et peu intrusive par rapport aux structures actuelles de microprocesseurs » affirme Jean-Luc Danger. HCODE vérifie que les sauts entre programme et sous-programme sont intègres et associe une signature numérique (ou hash value) à chaque suite d’instructions du programme. L’ensemble des signatures et des sauts attendus forment les données de référence ou métadonnées, stockées sur le module matériel HCODE greffé au processeur. En protégeant ainsi l’intégrité des sauts et des suites d’instructions, HCODE permet de résister aux attaques logicielles, mais également aux attaques physiques par injection de faute. En effet, si une erreur a été injectée dans une suite d’instruction ou dans une instruction même, une alarme va se déclencher et empêcher l’attaque.

« L’idée, c’est que ce matériel puisse se greffer à n’importe quel type de processeur, sans en modifier le cœur » affirme Jean-Luc Danger. Impossibles à modifier par une attaque logicielle, ces sécurités matérielles sont également plus rapides pour détecter les intrusions.  Prochaines étapes pour le chercheur, son équipe et Secure-IC : « Valider le concept sur plusieurs types de processeurs, le raffiner, minimiser la mémoire nécessaire au stockage des signatures, puis l’exploiter à l’échelle industrielle. » Nos logiciels pourront peut-être alors dormir sur leurs deux oreilles…

À lire également sur I’MTech :  Secure-IC protège les circuits électroniques contre les attaques physiques

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *