To nedávno prelomili správy boli identifikované dve zraniteľné miesta v linuxovom jadre to povoliť použitie subsystém eBPF obchádza ochranu pred útokom Spectre 4 (SSB, špekulatívny obchvat obchodu). Uvádza sa, že pomocou neprivilegovaného programu BPF môže útočník vytvoriť podmienky pre špekulatívne vykonávanie určitých operácií a určiť obsah ľubovoľných oblastí pamäte jadra.
Metóda útoku Spectre 4 sa spolieha na obnovu údajov uväznených v vyrovnávacej pamäti procesora po zahodení výsledku špekulatívneho vykonávania operácií pri spracovaní prekladaných operácií čítania a zápisu pomocou nepriameho adresovania.
Keď operácia čítania nasleduje po operácii zápisu, posunutie smeru čítania už môže byť známe kvôli podobným operáciám (operácie čítania sa vykonávajú oveľa častejšie a čítanie je možné vykonávať z pamäte cache) a procesor môže pred zápisom špekulatívne čítať bez toho, aby čakal na výpočet posunu nepriameho smeru zápisu.
Ak sa po výpočte posunu zistí priesečník pamäťových oblastí na zapisovanie a čítanie, procesor jednoducho zahodí už získaný výsledok čítania špekulatívne a zopakuje túto operáciu. Táto funkcia umožňuje inštrukcii čítania prístup k predchádzajúcej hodnote v určitom smere, zatiaľ čo operácia uloženia stále čaká.
Po vylúčení neúspešného špekulatívneho obchodu, stopy jeho vykonania zostávajú vo vyrovnávacej pamäti, potom na jeho načítanie je možné použiť jednu z metód na určenie obsahu vyrovnávacej pamäte na základe analýzy zmien v prístupovom čase do vyrovnávacej pamäte a údajoch vo vyrovnávacej pamäti.
Všimnite si toho, že každú tému je možné zneužiť nezávisle od druhej, spoliehajúc sa na to v chybách, ktoré sa neprekrývajú.
PoC boli súkromne zdieľané s správcami subsystému BPF pomoc s vývojom aranžmán.
Prvá zraniteľnosť CVE-2021-35477: je to spôsobené chybou v mechanizme validácie programu BPF. Na ochranu pred útokom Spectre 4 kontrolór pridáva ďalšie pokyny po potenciálne problémových operáciách ukladania do pamäte a ukladá nulovú hodnotu, aby sa vyrovnali stopy predchádzajúcej operácie.
Predpokladalo sa, že operácia nulového zápisu bude veľmi rýchla a bude blokovať špekulatívne vykonávanie, pretože závisí iba od ukazovateľa rámca zásobníka BPF. Ale v skutočnosti bolo možné vytvoriť podmienky, za ktorých má inštrukcia vedúca k špekulatívnemu vykonaniu čas na vykonanie pred operáciou preventívneho uloženia.
Druhá zraniteľnosť CVE-2021-3455: súvisí so skutočnosťou, že keď kontrola BPF zistí potenciálne nebezpečné operácie uloženia do pamäte, neinicializované oblasti zásobníka BPF, prvá operácia zápisu, v ktorej nie je chránený, sa ignorujú.
Táto funkcia vedie k možnosti vykonania špekulatívnej operácie čítania v závislosti od neinicializovanej oblasti pamäte pred vykonaním inštrukcie ukladania. Nová pamäť pre zásobník BPF sa alokuje bez kontroly obsahu, ktorý sa už v alokovanej pamäti nachádza, a vo fáze pred spustením programu BPF existuje spôsob, ako spravovať obsah oblasti pamäte, ktorá bude potom pridelená zásobník BPF.
Dostupné riešenie znova implementuje techniky zmierňovania, aby mohlo pokračovať odporúčané predajcami CPU a dostupné v jadre hlavnej rady úložisko git.
Nakoniec je uvedené, že správcovia subsystémov eBPF v jadre získali prístup k prototypu exploitu, ktorý demonštruje možnosť vykonávania útokov v praxi.
Problémy sú vyriešené vo forme opráv, ktoré budú zahrnuté v ďalšej aktualizácii jadra Linuxu, takže aktualizácie pre rôzne distribúcie začnú prichádzať v priebehu niekoľkých nasledujúcich dní.
Fuente: https://www.openwall.com/