Descripción general de la extensión de etiquetado de memoria (Armv8.5-A)

Esta publicación proporciona una traducción del documento técnico del nuevo Armv8.5-A: Memory Tagging Extension (MTE) de ARM. MTE busca aumentar la seguridad del código escrito en idiomas inseguros sin requerir cambios en el código fuente y, en algunos casos, sin requerir la compilación. El despliegue simple de mecanismos para detectar y prevenir las consecuencias de las violaciones de seguridad de la memoria puede evitar la explotación de una gran clase de vulnerabilidades.



Introducción


En 1988, el gusano de Internet bloqueó una décima parte de la red que todavía estaba en su infancia, y la parte restante se desaceleró significativamente ( The Morris Worm ). Más de treinta años después, dos clases de vulnerabilidades de memoria siguen siendo relevantes e importantes para el código escrito en un lenguaje de programación tipo C. Según la presentación de BlueHat de 2019 , el 70% de todos los problemas de seguridad resueltos en los productos de Microsoft son causados ​​por violaciones de seguridad de la memoria. Google obtuvo datos similares para Android : más del 75% de las vulnerabilidades son violaciones de la seguridad de la memoria. Aunque muchas de estas violaciones no habrían sido posibles en lenguajes seguros más modernos, la base del código escrito en C y C ++ es muy extensa. Debian Linux solocontiene más de medio billón de líneas .


Las violaciones de seguridad de la memoria se dividen en dos categorías principales: seguridad espacial y seguridad temporal. La explotación de violaciones del primer tipo generalmente está destinada a:


  • entrega de carga maliciosa;
  • ganar control sobre el sistema (en una cadena con otros tipos de vulnerabilidades);
  • organización de fuga de información privilegiada.

Se produce una violación de la seguridad espacial cuando una apelación a un objeto va más allá de sus límites reales. Por ejemplo: desbordamiento de búfer en la pila, lo que puede permitir reescribir la dirección de retorno de la función, que a su vez puede formar la base de varios tipos de ataques.


́ , , , , . , , , .


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). /, .


a13xp0p0vy su excelente publicación , CVE-2019-18683: Explotación de una vulnerabilidad en el subsistema Linux V4L2 , que despertó interés en el motor MTE .


All Articles