Grupi i kërkuesve nga Universiteti i Lirë i Amsterdamit zbuloi një metodë të re sulmi "Native BHI" (CVE-2024-2201), e cila lejon në sistemet me procesorë Intel të përcaktojë përmbajtjen e memories së kernelit të Linuxit gjatë ekzekutimit të një eksploit në hapësirën e përdoruesit. Në rastin e aplikimit të sulmit në sistemet e virtualizimit, sulmuesi nga sistemi mik mund të përcaktojë përmbajtjen e memories së mjedisit pritës ose të sistemeve të tjera të mikpritjes.
Metoda Native BHI ofron një teknikë tjetër të shfrytëzimit të dobësisë BHI (Branch History Injection, CVE-2022-0001), e cila kalon mënyrat e mbrojtjes të realizuara më parë. Metoda e propozuar në vitin 2022 për sulmin BHI nënkuptonte shfrytëzimin e dobësisë brenda një niveli të vetëm privilegjesh, për të cilin eksploit bazohej në ekzekutimin e një programi eBPF, i ngarkuar nga përdoruesi në kernel. Për të ndaluar dobësinë mjaftonte të kufizohej aksesin në ekzekutimin e kodit eBPF për përdoruesit e zakonshëm.
Metoda e re Native BHI nuk kĂ«rkon akses nĂ« eBPF dhe lejon njĂ« sulmues tĂ« pa privilegjuar tĂ« realizojĂ« sulm nga hapĂ«sira e pĂ«rdoruesit. Metoda bazohet nĂ« ekzekutimin e gadheteve ekzistuese tĂ« kodit nĂ« kernel â sekuenca komandash qĂ« çojnĂ« nĂ« ekzekutimin spekulativ tĂ« instrukcioneve. PĂ«r gjetjen nĂ« kernel tĂ« gadheteve tĂ« pĂ«rshtatshme Ă«shtĂ« zhvilluar njĂ« mjet i veçantĂ« InSpectre Gadget, i cili gjatĂ« analizĂ«s sĂ« kernelit 6.6-rc4 identifikoi 1511 gadhete Spectre dhe 2105 gadhete ndihmĂ«se tĂ« menaxhimit.

Në bazë të gadheteve të gjetura, kërkuesit përgatitën një eksploit, i cili lejon nxjerrjen nga buferët e kernelit një varg me hash-in e fjalëkalimit të përdoruesit root, i ngarkuar nga skedari /etc/shadow. Shpejtësia e nxjerrjes së të dhënave nga memoria e kernelit është afërsisht 3.5 Kb në sekondë.

Metoda BHI përbën një variant të zgjeruar të sulmit Spectre-v2, në të cilin për rrethimin e mbrojtjes së shtuar (Intel eIBRS dhe Arm CSV2) dhe organizimin e rrjedhjes së të dhënave përdoren zëvendësimi i vlerave në buferin e historisë globale të kalimeve (Branch History Buffer), i aplikuar në CPU për të rritur saktësinë e parashikimit të ndarjes duke marrë parasysh historinë e kalimeve të kaluar. Gjatë sulmit, përmes manipulimeve me historinë e kalimeve, krijohen kushte të parashikimit të gabuar të kalimit dhe ekzekutimit spekulativ të instrukcioneve të nevojshme, rezultati i të cilave vendoset në cache.
Dallimet nga sulmi Spectre-v2 përfshijnë përdorimin e një_bufferi_të_histories_së_kalimeve (Branch History Buffer) në vend të_bufferit_të_parashikimit_të_deveve (Branch Target Buffer). Për të nxjerrë të dhëna nga memoria, sulmuesi duhet të krijojë kushte, në të cilat gjatë ekzekutimit të një operacioni spekulativ, adresa do të merret nga një zonë që duhet të identifikohet. Pas ekzekutimit të një kalimi të spekuluar të të dhënave, adresa e kalimit e lexuar nga memoria, mbetet në cache, pas së cilës një nga metodat për të identifikuar përmbajtjen e caches mund të aplikohet në bazë të analizës së ndryshimit të kohës së qasjes në të dhëna të cache-uar dhe të pa-cache-uar.
Suli Native BHI nuk mbron nga përdorimi i instrukcioneve Intel IBT (Indirect Branch Tracking) dhe mekanizmi hibrid i mbrojtjes së rrjedhës së ekzekutimit të instrukcioneve FineIBT të implementuar në bërthamën Linux, e cila kombinon përdorimin e instrukcioneve të pajisjeve IBT dhe mbrojtjes programore kCFI (kernel Control Flow Integrity) për të bllokuar shkeljen e rendit të zakonshëm të ekzekutimit (control flow). FineIBT lejon ekzekutimin për kalim të të dhënave vetëm në rast se kalimi është në instrukcionin ENDBR, i cili vendoset në fillim të funksionit. Për më tepër (në mënyrë analogjike me mekanizmin kCFI) bëhet kontroll i hash-eve që garantojnë të pandryshueshmërinë e treguesve.
Për të mbrojtur nga varianti i ri i sulmit, në bërthamën Linux është shtuar një ndryshim me implementimin e një mënyre mbrojtjeje shtesë, e cila përdor burimet e mbrojtjes të propozuara nga kompania Intel (BHI_DIS_S) ose një mbrojtje alternative programore, e cila është implementuar për të mbrojtur hipervizorin. KVMZhvilluesit e hipervizorit Xen gjithashtu publikuan një korrigjim, i bazuar në përdorimin e mënyrës BHI_DIS_S, e cila kufizon parashikimet bazuar në historinë e kalimeve. Mbështetje për BHI_DIS_S është e disponueshme në procesorët, duke filluar nga Intel Alder Lake, si dhe në CPU-të server, duke filluar nga Intel Sapphire Rapids. Po ashtu, është në dispozicion një mënyrë mbrojtjeje programore, e bazuar në përdorimin e sekuencave për të pastruar bufferin e historisë së kalimeve, por kjo çon në një përkeqësim më të dukshëm të performancës.
Burimi: opennet.ru
