Présentation de l'extension d'étiquetage de mémoire (Armv8.5-A)

Cette publication présente une traduction du livre blanc pour la nouvelle Armv8.5-A: Memory Tagging Extension (MTE) d'ARM. MTE cherche à accroître la sécurité du code écrit dans des langages dangereux sans nécessiter de modifications du code source, et dans certains cas, sans nécessiter de recompilation. Un simple déploiement de mécanismes pour détecter et prévenir les conséquences des violations de la sécurité de la mémoire peut empêcher l'exploitation d'une grande classe de vulnérabilités.



introduction


En 1988, le ver Internet a paralysé un dixième du réseau qui en était encore à ses balbutiements, et la partie restante a considérablement ralenti ( The Morris Worm ). Plus de trente ans plus tard, deux classes de vulnérabilités de mémoire restent pertinentes et importantes pour le code écrit dans un langage de programmation de type C. Selon la présentation BlueHat 2019 , 70% de tous les problèmes de sécurité résolus dans les produits Microsoft sont causés par des violations de la sécurité de la mémoire. Des données similaires ont été obtenues par Google pour Android : plus de 75% des vulnérabilités sont des violations de la sécurité de la mémoire. Bien que beaucoup de ces violations n'auraient pas été possibles dans des langages sûrs plus modernes, la base de code écrite en C et C ++ est très étendue. Debian Linux seulcontient plus d'un demi-milliard de lignes .


Les violations de la sécurité de la mémoire entrent dans deux catégories principales: la sécurité spatiale et la sécurité temporaire. L'exploitation des violations du premier type est généralement destinée à:


  • livraison de charge utile malveillante;
  • prendre le contrôle du système (dans une chaîne avec d'autres types de vulnérabilités);
  • organisation de fuites d'informations privilégiées.

Une violation de la sécurité spatiale se produit lorsqu'un appel à un objet dépasse ses véritables limites. Par exemple: débordement de tampon sur la pile, qui peut permettre de réécrire l'adresse de retour de la fonction, qui à son tour peut former la base de plusieurs types d'attaques.


́ , , , , . , , , .


MTE . MTE , . . MTE , . ( ) .



MTE , , . .


MTE , . (legacy) MTE .


MTE . MTE , . MTE MTE , Branch Target Identification (BTI) Pointer Authentication Code (PAC), , , .


MTE


Memory Tagging Extension "-" (lock & key). (lock) . ( ), . ( ) .


16 . (Tag Granule). (lock).


(, , ) , .


, ́ , MTE Top Byte Ignore (TBI) Armv8-A. TBI , . . MTE .


"-" :


MTE , . ( 4), , . , , , , , , .


MTE - . , , 100%.



, Memory Tagging Extension Armv8-A. , :


  • Architectural Details
  • Deploying MTE at Scale
  • Deploying MTE in Hardware
  • Deploying MTE in Software
  • Optimizing for MTE

, Google MTE Android (Arm). /, .


a13xp0p0vet son excellente publication , CVE-2019-18683: Exploiting a Vulnerability in the Linux V4L2 Subsystem , qui a suscité un intérêt pour le moteur MTE .


All Articles