Dëmtueshmëria në eBPF që lejon përparimin e mbrojtjes nga sulmi Spectre 4

Në kernin Linux janë zbuluar dy të meta që lejojnë përdorimin e nënshëndetës së eBPF për të anashkaluar mbrojtjen nga sulmi Spectre v4 (SSB, Speculative Store Bypass). Me ndihmën e një programi BPF të papërjashtuar, një sulmues mund të krijojë kushte për përfundimin spekullativ të operacioneve të caktuara dhe të përcaktojë përmbajtjen e zonave të çfarëdo të memories së kernit. Ne shoqëruese të nënshëndetës eBPF në kernel morën akses në një prototip eksploiti që tregon mundësinë e realizimit të sulmeve në praktikë. Problemet janë zgjidhur në formën e patch-eve (1, 2), të cilat do të përfshihen në përditësimin e ardhshëm të kernit Linux. Përditësimet në shpërndarjet nuk janë formuar ende (Debian, RHEL, SUSE, Arch, Fedora, Ubuntu).

Metoda e sulmit Spectre 4 bazohet në rikuperimin e të dhënave që mbetën në cache-në e procesorit pas përjashtimit të rezultatit të ekzekutimit spekullativ të operacioneve gjatë përpunimit të operacioneve alternuese të shkruajtjes dhe leximit duke përdorur adresimin e tërthortë. Kur operacioni i leximit ndjek operacionin e shkruajtes (p.sh., mov [rbx + rcx], 0x0; mov rax, [rdx + rsi]), offseti i adresës për leximin mund të jetë tashmë i njohur për shkak të ekzekutimit të operacioneve të ngjashme (operacionet e leximit ekzekutohen shumë më shpesh dhe leximi mund të bëhet nga cache) dhe procesori mund të ekzekutojë spekullativisht leximin para shkruajtes, pa pritur që të llogaritet offseti për adresimin e tërthortë të shkruajtes.

Nëse pas llogaritjes të offsetit zbulohet një ndërthurje e zonave të memories për shkruajtes dhe leximit, procesori thjesht do të përjashtojë rezultatin e leximit që është marrë spekullativisht dhe do të përsërisë këtë operacion. Ky veçori lejon që instruksioni i leximit të ketë akses në një vlerë të vjetër në një adresë të caktuar ndërsa operacioni i ruajtjes ende nuk ka përfunduar. Pas përjashtimit të operacionit spekullativ të pasuksesshëm, cache mbetet me shenja të ekzekutimit të tij, pas së cilës mund të përdoret një nga metodat për të përcaktuar përmbajtjen e cache-s në bazë të analizës së ndryshimit të kohës së aksesit në të dhënat e mbështjella dhe të papërpunuara.

Vulnera e parë (CVE-2021-35477) është shkaktuar nga një mangësi në mekanizmin e kontrollit të shërbimeve BPF. Për të mbrojtur nga sulmi Spectre 4, verifikuesi shton pas operacioneve potencialisht problematike të ruajtjes në memorie një instrukcion të shtuar, i cili ruan një vlerë zero për të nxjerrë gjurmët e operacionit të mëparshëm. Ishte supozuar që operacioni i shkruarjes së zeros do të ekzekutohej shumë shpejt dhe do të bllokonte ekzekutimin spekulativ, pasi ai varet vetëm nga treguesi i kadrit të stack-ut BPF. Por në fakt, u tregua e mundur që të krijoheshin kushte, ku instrukcioni që çon në ekzekutim spekulativ arrin të ekzekutohet para operacionit të ruajtësit të nxjerrjes.

Vulnera e dytë (CVE-2021-3455) lidhet me faktin që kur verifikuesi BPF identifikon operacione potencialisht të rrezikshme të ruajtjes në memorie, nuk merren parasysh fushat e pa inicializuara të stack-ut BPF, operacioni i parë i shkruarjes në të cilat nuk është i mbrojtur. Një karakteristikë e tillë lejon realizimin e një operacioni spekulativ të leximit, i varur nga një fushë e pa inicializuar e memories, para se të ekzekutohet instrukcioni i ruajtjes. Memoria e re për stack-un BPF është ndarë pa kontrollin e përmbajtjes që tashmë ekziston në memorien e ndarë, dhe në fazën para ekzekutimit të programit BPF ka një mënyrë për të kontrolluar përmbajtjen e fushës së memories, e cila më pas do të ndahet për stack-un BPF.

Burimi: opennet.ru

Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы 🔥 Купить надежный хостинг для сайтов с защитой от DDoS, VPS VDS серверы | ProHoster