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
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.
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.