Visão geral da extensão de marcação de memória (Armv8.5-A)

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 .


All Articles