PortSmash : une nouvelle faille side-channel qui dérobe les secrets des puces Intel !

Cybersécurité

Des chercheurs ont développé un exploit qui utilise une fonctionnalité des puces Intel pour voler des clés cryptographiques cachées.

portsmash

Le code de la preuve-de-concept, appelé PortSmash, provient de chercheurs de l’Université de technologie de Tampere, en Finlande, et de l’Université technique de La Havane, à Cuba. Ce dernier utilise une catégorie d’exploit qui lance des attaques side-channel, dans lesquelles un programme en espionne un autre pendant son exécution.  L’attaque utilise une fonctionnalité appelée Simultaneous Multi Threading (SMT), qui exécute deux programmes séparément au niveau d’un seul cœur du processeur physique. Bien que ce concept soit utilisé dans diverses puces depuis la fin des années 1960, cette attaque porte sur la version propre à Intel, nommée Hyper-Threading, qui a commencé à être intégrée dans ses processeurs en 2002.

Les attaques par side-channel n’espionnent pas directement les données sensibles du programme de la victime. Au lieu de cela, un thread (un thread d’attaque) recherche des indices qui révèlent ce que fait l’autre thread (le thread de la victime) et récupère les données à partir de là. Elles peuvent utiliser une gamme de signaux, y compris la synchronisation des instructions. PortSmash utilise la synchronisation des instructions basée sur le conflit de ports.

Une tempête au niveau de n’importe quel port

Chaque cœur physique a un certain nombre de ports, qui correspondent aux régions de la puce qui effectuent le traitement physique à proprement parlé. Lorsque deux threads s’exécutent sur une puce, ils doivent souvent passer à tour de rôle pour utiliser ces ports.

PortSmash exploite cette situation. Son thread d’attaque frappe de manière répétée un port avec des instructions, à moins que le planificateur du CPU cesse de les exécuter et rend le port disponible pour l’autre thread. En mesurant le temps entre ses propres instructions qui s’exécutent sur ce port, il peut mesurer le temps nécessaire à l’autre thread pour traiter ses propres instructions. Cela peut l’aider à découvrir ce que cache un programme au fil du temps.

La preuve-de-concept dérobe une clé privée OpenSSL au niveau d’un serveur TLS. C’est juste un exemple de ce que l’attaque peut faire, et le code pourrait facilement être reconfiguré pour voler aussi d’autres informations.

Comment peut-il être corrigé ? Désactivez le SMT, a déclaré le chercheur Billy Brumley dans cet article envoyé via à liste de diffusion. De nombreuses machines n’autorisent pas cela dans le BIOS, donc OpenBSD a déjà désactivé la prise en charge du SMT dans son planificateur par défaut en juin dernier. C’était quelques jours avant la divulgation d’un autre bug de type side-channel appelé TLSBleed, que des chercheurs néerlandais utilisaient pour extraire des clés cryptographiques à partir de threads de victimes au niveau de puces Intel.

Ce bug est différent des attaques Spectre et Meltdown, révélées en janvier, qui utilisaient une exécution spéculative pour voler des données. Au moment d’écrire cet article, nous ne savons pas encore si cela affectera les puces AMD.

Quelles sont implications à votre niveau ?

Si vous utilisez simplement un ordinateur de bureau ou un ordinateur portable pour des tâches routinières telles que les applications de jeu, de navigation et de productivité, alors les implications sont quasiment inexistantes. Cette attaque consiste à exécuter du code sur votre ordinateur. Si un attaquant est capable de le faire, vous avez déjà des problèmes car il pourrait utiliser son code pour obtenir vos informations de manière beaucoup plus simple.

Le vrai danger ici concerne les utilisateurs qui exécutent de nombreux workloads sur la même machine. Les environnements cloud multi-tenant seraient une cible privilégiée. Cependant, l’attaquant devra toujours faire fonctionner son thread sur le même noyau physique que le programme qu’il souhaite espionner.

Dans une déclaration largement relayée par la presse, Intel a souligné qu’il incombait aux développeurs de créer des logiciels plus sécurisés pour empêcher des personnes malveillantes d’abuser de cette fonctionnalité :

Les logiciels ou les bibliothèques de logiciels peuvent être protégés contre de tels problèmes en utilisant des pratiques de développement side-channel sécurisées. 

Colin Percival, ancien responsable de la sécurité pour le FreeBSD OS, a tweeté en donnant davantage de conseils à ce sujet, et en expliquant que ce concept était connu depuis des années et que des bonnes pratiques de codage étaient essentielles.

OpenSSL a déjà publié un correctif pour résoudre ce problème. Nous espérons que cela incitera les autres développeurs à s’assurer qu’ils codent de manière sécurisée pour éviter de laisser fuiter des données sensibles via des attaques de type side-channel.

Intel a déjà retiré Hyper-Threading de son processeur i7 9700k, mais nous ne devons pas en déduire que c’est parce qu’il avait détecté des problèmes de sécurité. En effet, il est toujours en train d’intégrer cette fonctionnalité dans de nombreux autres processeurs, y compris le haut de gamme i9 9900k. Il est davantage question ici de segmentation du marché et d’aspects économiques que de considérations véritablement orientées cybersécurité !


Billet inspiré de PortSmash attack steals secrets from Intel chips on the side, sur Sophos nakedsecurity.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.