Esta publicação apresenta uma tradução do whitepaper do novo Armv8.5-A: MTE (Memory Tagging Extension) da ARM. O MTE procura aumentar a segurança do código escrito em idiomas não seguros sem exigir alterações no código-fonte e, em alguns casos, sem exigir recompilação. A implantação simples de mecanismos para detectar e prevenir as consequências de violações da segurança da memória pode impedir a exploração de uma grande classe de vulnerabilidades.

Introdução
Em 1988, o worm da Internet quebrou um décimo da rede que ainda estava em sua infância, e a parte restante diminuiu significativamente ( The Morris Worm ). Mais de trinta anos depois, duas classes de vulnerabilidades de memória permanecem relevantes e importantes para o código escrito em uma linguagem de programação do tipo C. De acordo com a apresentação do BlueHat de 2019 , 70% de todos os problemas de segurança resolvidos nos produtos da Microsoft são causados por violações de segurança da memória. Dados semelhantes foram obtidos pelo Google para Android : mais de 75% das vulnerabilidades são violações da segurança da memória. Embora muitas dessas violações não fossem possíveis em linguagens seguras mais modernas, a base de código escrita em C e C ++ é muito extensa. Somente Debian Linuxcontém mais de meio bilhão de linhas .
As violações de segurança da memória se enquadram em duas categorias principais: segurança espacial e segurança temporária. A exploração de violações do primeiro tipo geralmente se destina a:
- entrega de carga maliciosa;
- ganhar controle sobre o sistema (em uma cadeia com outros tipos de vulnerabilidades);
- organização do vazamento de informações privilegiadas.
Uma violação da segurança espacial ocorre quando um apelo a um objeto ultrapassa seus limites verdadeiros. Por exemplo: estouro de buffer na pilha, o que pode permitir reescrever o endereço de retorno da função, que por sua vez pode formar a base de vários 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). /, .
a13xp0p0ve sua excelente publicação , CVE-2019-18683: Explorando uma vulnerabilidade no subsistema Linux V4L2 , que despertou interesse no mecanismo MTE .