Récemment, une équipe de chercheurs coréens de Samsung, de l'Université nationale de Séoul et du Georgia Institute of Technology a testé une nouvelle attaque d'exécution spéculative appelée TIKTAG. De manière assez surprenante, cette attaque spécialement conçue cible l'extension Memory Tagging d'ARM, permettant une fuite de données avec un taux de réussite supérieur à 95 %. Les implications pratiques de cette découverte sont importantes car elle permet aux pirates de contourner les principaux mécanismes de protection contre la corruption de la mémoire.

Comprendre l'extension de marquage de mémoire d'ARM

Intégré en option de base avec l'ARM v8. Plus précisément, avec l'architecture 5-A, MTE constitue une amélioration dans la résolution du problème de corruption de la mémoire, qui constitue l'une des plus grandes catégories de problèmes de sécurité. Le marquage à faible surcharge est utilisé dans MTE avec des balises d'une taille de quatre bits allouées à des blocs de mémoire de 16 octets. Ce mécanisme permet de garantir que le pointeur attaché à une balise affirme la balise de la région de mémoire à laquelle l'accès est effectué, réduisant ainsi les cas d'accès non autorisé à la mémoire et d'abus.

MTE, comme indiqué précédemment, existe en trois catégories à savoir ; synchrone, asynchrone et asymétrique et chacun est livré avec un type équilibré de sécurité et de performances. Pourtant, l’attaque TIKTAG met en évidence les vulnérabilités du système, montrant que même une protection de haut niveau peut être vaincue.

L'attaque 'TIKTAG' d'ARM affecte les systèmes Google Chrome et Linux
Crédit image : arxiv.org

Les chercheurs ont observé deux programmes principaux très efficaces et rapides, notamment TIKTAG-v1 et TIKTAG-v2, qui ciblaient l'exécution de spéculations pour fuir les balises mémoire MTE.

TIKTAG-v1 : prédiction de branchement et prélecture de données

Les fonctionnalités utilisées dans TIKTAG-v1 incluent la réduction de la spéculation dans la prédiction de branche et la prélecture des données du processeur. Ce gadget a résisté au noyau Linux, notamment dans les fonctions qui impliquent des spéculations sur la mémoire. Un code malveillant modifie les pointeurs du noyau et utilise des canaux côté cache via des appels de fonction d'appel système ; ils accèdent ensuite aux états d'un cache et les mesurent pour obtenir des balises mémoire.

tiktag 1tiktag 1
Crédit image : arxiv.org

TIKTAG-v2 : transfert de stockage à chargement

TIKTAG-v2 se concentre sur le transfert du stockage vers le chargement dans la spéculation temporelle du processeur. La première étape consiste à stocker la valeur dans une adresse mémoire et à la charger simultanément à partir de la même adresse. La valeur est transmise à la balise suivante, chargeant et modifiant avec succès l'état du cache partagé. En revanche, une discordance empêche le transfert, l'état du cache reste dans le même état. Si les attaquants examinent l’état du cache après une exécution spéculative, ils peuvent en déduire le résultat de la vérification des balises.

TIKTAG-v2 s'est avéré efficace contre le processus vulnérable cible – le navigateur Google Chrome, en mettant l'accent sur les parties incluant le moteur JavaScript V8 : l'exploitation des vulnérabilités de corruption de mémoire dans le processus de rendu a également été montrée ici dans cet article. .

tiktag 2tiktag 2
Crédit image : arxiv.org

Implications et réponse de l’industrie

La fuite des balises MTE n’est pas liée à la fuite de mots de passe, de clés de cryptage, etc. Cependant, elle affaiblit effectivement la sécurité que MTE prétend offrir. Par conséquent, cela permet des attaques de corruption de mémoire qui sont de nature subreptice. La recherche sur le terrain s'est terminée en novembre et décembre 2023, l'équipe ayant soumis ses résultats aux entités. Même si l'accueil général a été plutôt positif, aucun pansement rapide n'a été immédiatement appliqué.

Dans un document technique déposé sur un référentiel connu sous le nom d'arxiv.org, les chercheurs ont suggéré plusieurs mesures d'atténuation pour contrer les attaques TIKTAG. Premièrement, ne permettez pas à la spéculation de modifier les états du cache une fois la vérification des balises effectuée. Deuxièmement, entourer des barrières de spéculation (instructions « sb » ou « isb ») permet d'empêcher l'exécution de procédures de mémoire sensibles. Troisièmement, ajoutez du temps supplémentaire entre les instructions de branchement et les accès à la mémoire avec des instructions de remplissage. Enfin, améliorez les stratégies de sandboxing pour limiter de manière proactive le caractère constructif des AMA dans des espaces mémoire sensibles de la manière la plus sécurisée possible.

contournement mtecontournement mte
Crédit image : arxiv.org

Réponses d'ARM et Chrome

ARM a compris que l'attaque TIKTAG était très puissante et a ensuite souligné qu'il était toujours sûr de divulguer les balises à attribuer au niveau de l'architecture en utilisant des méthodes spéculatives. Leur bulletin soulignait que les balises d'allocation ne sont pas cachées dans l'espace d'adressage.

D'un autre côté, l'équipe de sécurité de Google Chrome a signalé ces problèmes mais a choisi de ne pas les résoudre et a noté que le bac à sable V8 ne garde pas secrètes les données de mémoire et les balises MTE. De plus, pour l’instant, Chrome n’a pas activé les défenses basées sur MTE, donc la correction des bogues n’est pas urgente.

Bien que le mécanisme oracles MTE de l'appareil Pixel 8 ait ensuite été divulgué à l'équipe de sécurité de Google Android en avril 2024 et confirmé comme un problème matériel éligible à une prime. Les attaques n'auraient pas pu être possibles sans l'exploitation des images de démarrage et de récupération de l'appareil Pixel 8.

A lire également