Zranitelnosti v subsystému eBPF, které umožňují obcházení ochrany proti útokům třídy Spectre.

V jádře Linux byla zjištěna zranitelnost (CVE-2021-33624), která umožňuje využití subsystému eBPF k obcházení ochrany vůči zranitelnostem typu Spectre, což dává možnost určit obsah paměti v důsledku vytvoření podmínek pro spekulativní vykonávání určitých operací. K útoku Spectre je potřeba přítomnost určité sekvence příkazů v privilegovaném kódu, které vedou k spekulativnímu vykonávání instrukcí. Manipulací s předávanými BPF programy lze generovat podobné instrukce v eBPF a dosáhnout úniku obsahu jádrové paměti a libovolných oblastí fyzické paměti prostřednictvím bočních kanálů.

Zranitelnost je způsobena nedostatky ve verifikátoru, který se používá k odhalení chyb a nepřípustné aktivity v BPF programech. Verifikátor prochází možné dráhy vykonávání kódu, ale vynechává možnosti větvení, které jsou z pohledu sémantiky architektury instrukčního setu nepřijatelné. Při vykonávání BPF programu mohou být takové větvení, která verifikátor nezohlednil, procesorem nesprávně předpovězena a vykonána v spekulativním režimu. Například při analýze operace „load“ verifikátor předpokládá, že v instrukci se používá registr s adresou, jejíž hodnota je vždy v daných mezích, ale útočník může vytvořit podmínky, za nichž se procesor pokusí spekulativně vykonat operaci s adresou, která neodpovídá podmínkám kontroly.

Problém se projevuje počínaje verzí jádra 4.15 a byl odstraněn ve formě patchů (1, 2, 3, 4). V distribucích zůstává zranitelnost zatím neopravená (Debian, RHEL, Ubuntu, Fedora, SUSE, Arch).

Dále lze uvést poznámku o vlivu ochranných prostředků proti zranitelnostem typu Spectre na výkon. V poznámce jsou shrnuty výsledky optimalizace debuggeru rr (Record and Replay), který byl kdysi vytvořen v Mozille k debuggování obtížně reprodukovatelných chyb ve Firefoxu. Kešování systémových volání používaných k ověření existence adresářů umožnilo zkrátit čas provádění operace „rr sources“ pro testovací projekt z 3 minut 19 sekund na 36 sekund.

Autor optimalizace se rozhodl zkontrolovat, jak se změní výkon po vypnutí ochrany proti Spectre. Po spuštění systému s parametrem „mitigations=off“ doba provádění „rr sources“ bez optimalizace trvala 2 minuty 5 sekund (o 1,6 rychleji), zatímco s optimalizací – 33 sekund (o 9 % rychleji). Zajímavé je, že vypnutí ochrany proti Spectre nejen že snížilo dobu provádění kódu na úrovni jádra o 1,4 krát (z 2m9s na 1m32s), ale také dvakrát zkrátilo dobu provádění v uživatelském prostoru (z 1m9s na 0m33s), pravděpodobně kvůli snížené efektivnosti práce cache CPU a resetům TLB při zapnuté ochraně proti Spectre.

Zdroj: opennet.ru

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster