Las empresas Intel y AMD están desarrollando conjuntamente un conjunto ampliado de instrucciones ChkTag (x86 Memory Tagging), que será estandarizado para su implementación unificada en procesadores x86 de varios fabricantes. En términos de capacidades, ChkTag se asemeja a la extensión MTE (MemTag), que ya se ofrece en procesadores ARM, y también permite bloquear la explotación de vulnerabilidades causadas por accesos a bloques de memoria ya liberados, desbordamientos de búfer o accesos a la memoria antes de su inicialización.
ChkTag ofrece nuevas instrucciones de procesador que permiten a nivel de hardware vincular etiquetas a áreas de memoria y organizar la verificación de la validez del uso de punteros. Se afirma que la aplicación de estas instrucciones por los compiladores permitirá garantizar un manejo seguro de la memoria sin comprometer el rendimiento de las aplicaciones. Además, las aplicaciones que utilizan ChkTag seguirán siendo compatibles con los procesadores antiguos que no tienen soporte de hardware para ChkTag, lo que facilitará la implementación de la protección.
El método de protección implementado se basa en la creación de una etiqueta para cada bloque de memoria, que actúa como una especie de clave para acceder a esa memoria (por ejemplo, en la implementación de MTE, se crea una etiqueta de 4 bits cada 16 bytes). La etiqueta se genera por la aplicación para el área de memoria asignada utilizando instrucciones especiales de la CPU, y luego se guarda en los bits superiores no utilizados del puntero, así como en un área reservada e inaccesible para las aplicaciones de memoria lineal/virtual. Al acceder a la memoria utilizando un puntero etiquetado, el procesador verifica si la etiqueta vinculada al puntero coincide con las etiquetas vinculadas a los bloques de memoria, y permite el acceso solo si las etiquetas coinciden.
La tecnología ChkTag ha sido desarrollada a partir de la colaboración entre Intel y AMD en el grupo EAG (Grupo Asesor del Ecosistema x86), creado hace un año para facilitar la compatibilidad entre plataformas x86, estandarizar las interfaces de productos de Intel y AMD, simplificar el desarrollo de software para sistemas x86 y detectar las necesidades de los desarrolladores para ampliar la arquitectura. Además de Intel y AMD, los participantes del grupo incluyen a Linus Torvalds, creador del núcleo de Linux, Tim Sweeney, fundador de Epic Games y uno de los desarrolladores clave del motor de juego Unreal Engine, así como representantes de empresas como Broadcom, Dell, Google, Hewlett Packard, Lenovo, Meta, Microsoft, Oracle y Red Hat.
Además de ChkTag, Intel y AMD también han estandarizado y unificado las implementaciones del modelo de manejo de interrupciones FRED (Flexible Return and Event Delivery), el conjunto de instrucciones vectoriales AVX10 y las extensiones para multiplicación de matrices ACE (Advanced Matrix Extensions).
Fuente: opennet.ru
