Vulnerabilidade no mecanismo de execución especulativa dos procesadores AMD

O proxecto Grsecurity publicou detalles e unha demostración do método de ataque para unha nova vulnerabilidade (CVE-2021-26341) en procesadores AMD relacionada coa execución especulativa de instrucións despois de operacións de avance incondicionais. Se o ataque ten éxito, a vulnerabilidade permite determinar o contido das áreas de memoria arbitrarias. Por exemplo, os investigadores prepararon un exploit que lles permite determinar o deseño de enderezos e evitar o mecanismo de protección KASLR (aleatorización da memoria do núcleo) mediante a execución de código sen privilexios no subsistema do núcleo ePBF. Non se poden descartar outros escenarios de ataque que poidan levar a unha fuga do contido da memoria do núcleo.

A vulnerabilidade permite crear condicións nas que o procesador, durante a execución preventiva, procesa especulativamente a instrución inmediatamente despois da instrución de salto na memoria (SLS, Straight Line Speculation). Ademais, esta optimización funciona non só para operadores de salto condicional, senón tamén para instrucións que implican salto incondicional directo, como JMP, RET e CALL. Seguindo instrucións de salto incondicionais, pódense colocar datos arbitrarios que non están destinados á execución. Despois de determinar que unha rama non implica a execución da seguinte instrución, o procesador simplemente fai retroceder o estado e ignora a execución especulativa, pero o rastro da execución da instrución permanece na caché compartida e está dispoñible para a súa análise mediante técnicas de recuperación de canles laterales.

Do mesmo xeito que coa explotación da vulnerabilidade Spectre-v1, o ataque require a presenza de determinadas secuencias de instrucións (gadgets) no núcleo que conducen á execución especulativa. O bloqueo dunha vulnerabilidade neste caso pasa por identificar estes gadgets no código e engadirlles instrucións adicionais que bloquean a execución especulativa. As condicións para a execución especulativa tamén poden ser creadas por programas sen privilexios que se executan na máquina virtual eBPF. Para bloquear a capacidade de construír gadgets usando eBPF, recoméndase desactivar o acceso sen privilexios a eBPF no sistema ("sysctl -w kernel.unprivileged_bpf_disabled=1").

A vulnerabilidade afecta aos procesadores baseados na microarquitectura Zen1 e Zen2, incluíndo a primeira e segunda xeración de procesadores AMD EPYC e AMD Ryzen Threadripper, así como AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Procesadores da serie PRO e APU A. Para bloquear a execución especulativa de instrucións, recoméndase chamar instrucións INT3 ou LFENCE despois das operacións de rama (RET, JMP, CALL).

Fonte: opennet.ru

Engadir un comentario