Qu'est-ce que MTE (Memory Tagging Extension) ?

Extension d'Arm ajoutée dans Armv8.5-A. Une étiquette de 4 bits est attachée à chaque bloc de 16 octets de mémoire, une étiquette de 4 bits est aussi placée dans les bits de poids fort du pointeur, et le CPU vérifie à chaque accès si les deux concordent. L'utilisation de mémoire après sa libération et les accès hors limites peuvent ainsi être détectés de façon probabiliste, à faible coût.

Nom japonais: MTE(メモリタギング拡張)

« MTE (Memory Tagging Extension) » apparaît dans 1 questions d'entraînement réparties sur 1 thèmes, dont Sécurité matérielle : évolutions récentes.

Domaine: Sécurité matérielle : évolutions récentes

Comment les étiquettes sont comparées

Lors d'une allocation de mémoire, l'allocateur fixe l'étiquette côté mémoire pour chaque bloc de 16 octets de la zone et renvoie un pointeur portant la même valeur dans ses bits de poids fort (la partie qui ne sert pas à la traduction d'adresses). À chaque chargement et à chaque écriture, le CPU compare l'étiquette du pointeur à celle de la mémoire accédée et traite une discordance comme une erreur. Si les étiquettes sont changées lors de la libération d'une zone, un accès à la zone libérée par un ancien pointeur peut être détecté. Les étiquettes côté mémoire sont stockées séparément des données.

Une détection probabiliste

Une étiquette ayant 4 bits, il n'existe que 16 valeurs, et la probabilité qu'une étiquette choisie au hasard concorde par hasard est de 1/16. Un accès erroné isolé passe donc inaperçu avec une probabilité d'environ 6 % et est détecté dans environ 94 % des cas. Des stratégies d'allocation, comme attribuer toujours des étiquettes différentes aux zones voisines, permettent de détecter à coup sûr les débordements vers une zone voisine. Le stockage des étiquettes nécessite environ 4/128 = 3,125 % de mémoire supplémentaire.

Les modes de vérification

Le mode synchrone lève une exception dès qu'une discordance survient et identifie l'instruction fautive, ce qui convient au développement et au code critique, mais coûte un peu plus. Le mode asynchrone enregistre l'erreur et la signale plus tard, ce qui coûte moins et convient à la collecte d'erreurs sur de nombreux appareils en service. Selon l'objectif, MTE sert aussi bien aux vérifications pendant le développement qu'à entraver les attaques sur les appareils expédiés.

S'entraîner : questions sur MTE (Memory Tagging Extension)

Avec MTE (Memory Tagging Extension) d'Arm, une étiquette de 4 bits est attachée à chaque bloc de 16 octets de mémoire, une étiquette de 4 bits est aussi placée dans les bits de poids fort du pointeur, et le CPU vérifie à chaque accès si les deux concordent. On considère l'erreur qui consiste à accéder à une zone libérée par un ancien pointeur vers elle. Si la nouvelle étiquette attribuée lors de la réallocation de la zone est choisie uniformément au hasard parmi les 16 possibilités, quelle est la probabilité que les étiquettes concordent par hasard et que l'erreur passe inaperçue ?

  1. A1/16 (environ 6,3 %)
  2. B1/4 (25 %)
  3. C15/16 (environ 93,8 %)
Afficher la réponse et l'explication

Réponse : A. 1/16 (environ 6,3 %)

Une étiquette a 4 bits et peut donc prendre 2⁴ = 16 valeurs. Si la nouvelle étiquette est choisie uniformément parmi les 16 valeurs, la probabilité qu'elle coïncide par hasard avec l'étiquette de l'ancien pointeur est de 1/16 = 6,25 % (environ 6,3 %), et dans les 15/16 des cas restants, la discordance est détectée. Même un seul accès est détecté avec une probabilité d'environ 94 % ; on peut donc trouver les erreurs pendant le fonctionnement sur de nombreux appareils et rendre les attaques plus difficiles. Si l'allocation attribue toujours des étiquettes différentes à des zones voisines, les débordements vers la zone voisine sont toujours détectés.

Questions fréquentes

Où MTE est-il utilisé ?

Au milieu des années 2020, certains SoC de smartphones le prennent en charge, et des OS et des allocateurs de mémoire l'activent pour les vérifications pendant le développement et pour rendre les attaques plus difficiles. Il faut à la fois un matériel et un logiciel qui le prennent en charge.

MTE arrête-t-il les attaques qui exploitent les erreurs de mémoire ?

Il détecte de nombreuses erreurs et complique les attaques, mais les étiquettes peuvent concorder par hasard, et son efficacité baisse si les valeurs des étiquettes sont devinées ou divulguées. La détection étant probabiliste, on le combine, lorsque des garanties déterministes sont nécessaires, avec des mécanismes comme CHERI ou avec des langages sûrs en mémoire.

Questions mentionnant « MTE (Memory Tagging Extension) » (1)

  1. Avec MTE (Memory Tagging Extension) d'Arm, une étiquette de 4 bits est attachée à chaque bloc de 16 octets de mémoire, une étiquette de 4 bits est aussi placée dans les bits de poids fort du pointeur, et le CPU vérifie à chaque accès si les deux concordent. On considère l'erreur qui consiste à accéder à une zone libérée par un ancien pointeur vers elle. Si la nouvelle étiquette attribuée lors de la réallocation de la zone est choisie uniformément au hasard parmi les 16 possibilités, quelle est la probabilité que les étiquettes concordent par hasard et que l'erreur passe inaperçue ?

Termes associés

Pointeur Arm CCA (Confidential Compute Architecture) Attaque par exécution transitoire Authentification de pointeurs (PAC) CHERI DICE (Device Identifier Composition Engine) FIPS 140-3 HBOM (nomenclature matérielle) Informatique confidentielle (confidential computing) Injection de fautes par laser

Retour au glossaire