Dobësitë në eBPF që mund të anashkalojnë mbrojtjen e sulmit Spectre 4

Dy dobësi janë identifikuar në kernelin Linux që lejojnë përdorimin e nënsistemit eBPF për të anashkaluar mbrojtjen kundër sulmit Spectre v4 (SSB, Bypass Speculative Store). Duke përdorur një program të paprivilegjuar BPF, një sulmues mund të krijojë kushte për ekzekutimin spekulativ të disa operacioneve dhe të përcaktojë përmbajtjen e zonave arbitrare të kujtesës së kernelit. Mbajtësit e nënsistemeve eBPF në kernel morën akses në një shfrytëzim prototip që demonstron aftësinë për të kryer sulme në praktikë. Problemet janë rregulluar në formën e arnimeve (1, 2), të cilat do të përfshihen në përditësimin e ardhshëm të kernelit Linux. Përditësimet në kompletet e shpërndarjes nuk janë krijuar ende (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Metoda e sulmit Spectre 4 bazohet në rivendosjen e të dhënave të ruajtura në cache-in e procesorit pas hedhjes poshtë rezultatit të ekzekutimit spekulativ të operacioneve gjatë përpunimit të operacioneve alternative të shkrimit dhe leximit duke përdorur adresimin indirekt. Kur një operacion leximi pason një operacion shkrimi (p.sh., mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), zhvendosja e adresës së leximit mund të jetë tashmë e njohur për shkak të operacioneve të ngjashme që po kryhen (operacionet e leximit janë kryhet shumë më shpesh dhe leximet mund të kryhen nga cache) dhe procesori mund të kryejë në mënyrë spekulative lexime para shkrimit pa pritur që të llogaritet kompensimi i tërthortë i shkrimit.

Nëse, pas llogaritjes së kompensimit, zbulohet një kryqëzim i zonave të kujtesës për shkrim dhe lexim, procesori thjesht do të heqë rezultatin e lexuar tashmë të marrë në mënyrë spekulative dhe do ta përsërisë këtë operacion. Ky funksion lejon një udhëzim leximi për të hyrë në një vlerë të vjetër në një adresë, ndërkohë që funksionimi i dyqanit nuk është përfunduar ende. Pas hedhjes së një operacioni spekulativ të pasuksesshëm, gjurmët e ekzekutimit të tij mbeten në cache, pas së cilës mund të përdoret një nga metodat për përcaktimin e përmbajtjes së cache-it për ta rikthyer atë bazuar në një analizë të ndryshimeve në kohën e hyrjes në të dhënat e memorizuara dhe të pakapshme.

Dobësia e parë (CVE-2021-35477) është shkaktuar nga një defekt në mekanizmin e verifikimit të programit BPF. Për t'u mbrojtur kundër një sulmi Spectre 4, verifikuesi shton një udhëzim shtesë pas depozitimeve potencialisht problematike në memorie që ruan një vlerë null për të zhvendosur gjurmët e operacionit të mëparshëm. Operacioni i shkrimit null pritej të ishte shumë i shpejtë dhe të bllokonte ekzekutimin spekulativ sepse varet vetëm nga një tregues në kornizën e stivës BPF. Por në fakt, doli të ishte e mundur të krijoheshin kushte në të cilat një udhëzim që çon në ekzekutim spekulativ arrin të ekzekutohet përpara operacionit parandalues ​​të dyqanit.

Dobësia e dytë (CVE-2021-3455) është për shkak të faktit se kur verifikuesi BPF identifikon operacione potencialisht të rrezikshme të ruajtjes së memories, ai nuk merr parasysh zonat e pa inicializuara të pirgut BPF, operacioni i parë i shkrimit në të cilin nuk është i mbrojtur. Kjo veçori çon në mundësinë e kryerjes së një operacioni leximi spekulativ, i varur nga një zonë memorie e pa inicializuar, përpara ekzekutimit të udhëzimit të dyqanit. Memoria e re për stivën BPF shpërndahet pa kontrolluar përmbajtjen tashmë në memorien e alokuar dhe ekziston një mënyrë përpara se të ekzekutohet programi BPF për të manipuluar përmbajtjen e rajonit të memories që më pas do të ndahet për grumbullin BPF.

Burimi: opennet.ru

Shto një koment