Arm a introduit une fonctionnalité de sécurité matérielle appelée Memory Tagging Extensions (MTE) en 2018. Nous savons maintenant qu'elle pourrait ne pas tenir ses promesses.


MTE fonctionne en balisant des blocs de 16 octets de mémoire physique avec des clés de métadonnées de 4 bits. En pratique, lorsqu'un programme accède aux données d'un bloc étiqueté à l'aide d'un pointeur, le matériel vérifie si le pointeur contient la clé correspondante pour ce bloc de mémoire. L'absence d'une telle clé génère une erreur (et un verrou), détectant potentiellement les tentatives d'accès aux zones interdites de la mémoire.

La technologie a été présentée comme une défense contre les bogues de mémoire courants en C/C++, tels que les débordements de mémoire tampon et l'utilisation de la mémoire après une libération, qui pourraient conduire à un piratage du système et des données. Arm espérait que MTE aiderait les développeurs à détecter ces bugs lors des tests et à stopper les attaques en temps réel.

Les chercheurs disposent d’une solution de contournement efficace

Des chercheurs de l'Université nationale de Séoul, de Samsung et de Georgia Tech ont montré que le MTE peut être contourné dans environ 95 % des cas en moins de quatre secondes grâce à ce que l'on appelle attaques spéculatives.

Leur article, « TikTag : Breaking Arm's Memory Tagging Extension with Speculative Execution », décrit deux techniques, appelées TIKTAG-v1 et TIKTAG-v2, qui peuvent extraire des balises MTE pour des adresses mémoire arbitraires tout en observant comment les opérations spéculatives affectent la prélecture des données.

L'exécution spéculative est une technique d'optimisation dans laquelle les processeurs effectuent certaines opérations à l'avance et rejettent les résultats s'ils ne sont pas nécessaires. Cependant, l’accès spéculatif aux données peut laisser des canaux secondaires ouverts pendant un certain temps, créant ainsi une fenêtre par laquelle des informations s’échappent.

Les chercheurs ont réussi à extraire les balises MTE de Chrome sur Android et le noyau Linux avec plus de 95 % de réussite en moins de quatre secondes.

Il convient de noter que les balises extraites ne permettent pas nécessairement une utilisation directe. Les données sensibles telles que les mots de passe et les clés de cryptage ne sont pas directement exposées. Cependant, ils permettent aux attaquants de contourner la sécurité de MTE, la rendant ainsi moins efficace contre des attaques plus avancées.

Les experts ont proposé de nombreuses solutions à ces vulnérabilités, telles que la modification du matériel pour empêcher les fuites d'état du cache via des attaques spéculatives, l'insertion d'instructions de barrière spéculatives, l'ajout d'instructions de remplissage et l'augmentation du sandboxing pour limiter les accès spéculatifs. Les résultats ont également été communiqués à Arm, qui… a reconnu le problème mais ne l'a pas considéré comme « décisif ».

À peu près au même moment, l'équipe Chrome de Google a décidé de ne pas inclure les contre-mesures suggérées par les chercheurs, arguant que le moteur V8 de Chrome n'était pas conçu pour garantir la confidentialité des balises MTE. Dans le même temps, l'équipe de sécurité Android a émis une prime aux bogues après avoir confirmé et résolu le problème dans la série de téléphones Pixel 8.

A lire également