Dobësi në mekanizmin e ekzekutimit spekulativ të udhëzimeve të procesorëve AMD

Projekti Grsecurity ka publikuar detaje dhe një demonstrim të metodës së sulmit për një cenueshmëri të re (CVE-2021-26341) në procesorët AMD në lidhje me ekzekutimin spekulativ të udhëzimeve pas operacioneve të pakushtëzuara përpara. Nëse sulmi është i suksesshëm, dobësia lejon që të përcaktohet përmbajtja e zonave arbitrare të memories. Për shembull, studiuesit kanë përgatitur një shfrytëzim që u lejon atyre të përcaktojnë paraqitjen e adresës dhe të anashkalojnë mekanizmin e mbrojtjes KASLR (randomizimi i memories së kernelit) duke ekzekutuar kodin e paprivilegjuar në nënsistemin e kernelit ePBF. Skenarët e tjerë të sulmit nuk mund të përjashtohen që mund të çojnë në një rrjedhje të përmbajtjes së kujtesës së kernelit.

Dobësia ju lejon të krijoni kushte në të cilat procesori, gjatë ekzekutimit parandalues, përpunon në mënyrë spekulative instruksionin menjëherë pas instruksionit të kërcimit në memorie (SLS, Straight Line Speculation). Për më tepër, një optimizim i tillë funksionon jo vetëm për operatorët e kërcimit të kushtëzuar, por edhe për udhëzimet që nënkuptojnë kërcim të drejtpërdrejtë të pakushtëzuar, si JMP, RET dhe CALL. Pas udhëzimeve të kërcimit të pakushtëzuar, mund të vendosen të dhëna arbitrare që nuk janë të destinuara për ekzekutim. Pas përcaktimit që një degë nuk përfshin ekzekutimin e instruksionit të ardhshëm, procesori thjesht e kthen prapa gjendjen dhe injoron ekzekutimin spekulativ, por gjurma e ekzekutimit të instruksionit mbetet në memorien e përbashkët dhe është e disponueshme për analizë duke përdorur teknikat e rikthimit të kanalit anësor.

Ashtu si me shfrytëzimin e cenueshmërisë Specter-v1, sulmi kërkon praninë e sekuencave të caktuara të udhëzimeve (gadgets) në kernel që çojnë në ekzekutimin spekulativ. Bllokimi i një dobësie në këtë rast zbret në identifikimin e pajisjeve të tilla në kod dhe shtimin e udhëzimeve shtesë për to që bllokojnë ekzekutimin spekulativ. Kushtet për ekzekutimin spekulativ mund të krijohen gjithashtu nga programe të paprivilegjuara që ekzekutohen në makinën virtuale eBPF. Për të bllokuar aftësinë për të ndërtuar pajisje duke përdorur eBPF, rekomandohet të çaktivizoni aksesin e paprivilegjuar në eBPF në sistem (“sysctl -w kernel.unprivileged_bpf_disabled=1”).

Dobësia prek procesorët e bazuar në mikroarkitekturën Zen1 dhe Zen2, duke përfshirë gjeneratën e parë dhe të dytë të procesorëve AMD EPYC dhe AMD Ryzen Threadripper, si dhe AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon Threadripper. Procesorët e serive PRO dhe APU A. Për të bllokuar ekzekutimin spekulativ të instruksioneve, rekomandohet thirrja e instruksioneve INT3 ose LFENCE pas operacioneve të degës (RET, JMP, CALL).

Burimi: opennet.ru

Shto një koment