Vulnerabilitat en el mecanisme d'execució d'instruccions especulatives dels processadors AMD

El projecte Grsecurity ha publicat detalls i una demostració del mètode d'atac per a una nova vulnerabilitat (CVE-2021-26341) en els processadors AMD relacionats amb l'execució especulativa d'instruccions després d'operacions directes incondicionals. Si l'atac té èxit, la vulnerabilitat permet determinar el contingut d'àrees de memòria arbitràries. Per exemple, els investigadors han preparat un exploit que els permet determinar la disposició de l'adreça i evitar el mecanisme de protecció KASLR (aleatorització de la memòria del nucli) executant codi sense privilegis al subsistema del nucli ePBF. No es poden descartar altres escenaris d'atac que puguin provocar una filtració del contingut de la memòria del nucli.

La vulnerabilitat permet crear condicions sota les quals el processador, durant l'execució preventiva, processa especulativament la instrucció immediatament després de la instrucció de salt a la memòria (SLS, Straight Line Speculation). A més, aquesta optimització funciona no només per als operadors de salt condicional, sinó també per a instruccions que impliquen un salt incondicional directe, com ara JMP, RET i CALL. Seguint instruccions de salt incondicionals, es poden col·locar dades arbitràries que no estan destinades a l'execució. Després de determinar que una branca no implica l'execució de la següent instrucció, el processador simplement fa retrocedir l'estat i ignora l'execució especulativa, però el rastre de l'execució de la instrucció roman a la memòria cau compartida i està disponible per a l'anàlisi mitjançant tècniques de recuperació de canals laterals.

Igual que amb l'explotació de la vulnerabilitat Spectre-v1, l'atac requereix la presència de determinades seqüències d'instruccions (gadgets) al nucli que condueixen a una execució especulativa. Bloquejar una vulnerabilitat en aquest cas es redueix a identificar aquests gadgets al codi i afegir-hi instruccions addicionals que bloquegen l'execució especulativa. Les condicions per a l'execució especulativa també es poden crear mitjançant programes sense privilegis que s'executen a la màquina virtual eBPF. Per bloquejar la possibilitat de construir gadgets amb eBPF, es recomana desactivar l'accés sense privilegis a eBPF al sistema ("sysctl -w kernel.unprivileged_bpf_disabled=1").

La vulnerabilitat afecta els processadors basats en la microarquitectura Zen1 i Zen2, incloent la primera i segona generació de processadors AMD EPYC i AMD Ryzen Threadripper, així com AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper. Processadors de les sèries PRO i APU A. Per bloquejar l'execució especulativa d'instruccions, es recomana cridar instruccions INT3 o LFENCE després de les operacions de branca (RET, JMP, CALL).

Font: opennet.ru

Afegeix comentari