Zranitelnost v mechanismu spekulativního provádění instrukcí procesorů AMD

Projekt Grsecurity zveřejnil podrobnosti a ukázku metody útoku na novou zranitelnost (CVE-2021-26341) v procesorech AMD související se spekulativním prováděním instrukcí po operacích bezpodmínečného skoku vpřed. V případě úspěšného útoku zranitelnost umožňuje určit obsah libovolných oblastí paměti. Výzkumníci například připravili exploit, který vám umožní určit rozložení adres a obejít ochranný mechanismus KASLR (náhodnost paměti jádra) prostřednictvím spouštění neprivilegovaného kódu v subsystému jádra ePBF. Jiné scénáře útoku, které mohou uniknout obsahu paměti jádra, nejsou vyloučeny.

Zranitelnost umožňuje vytvořit podmínky, za kterých procesor během spekulativního provádění spekulativně zpracuje instrukci následující po instrukci skoku v paměti (SLS, Straight Line Speculation). Zároveň taková optimalizace funguje nejen pro operátory podmíněného skoku, ale také pro instrukce, které implikují přímý nepodmíněný skok, jako jsou JMP, RET a CALL. Bezpodmínečné instrukce větve mohou být následovány libovolnými daty, která nejsou určena k provedení. Po zjištění, že větev neznamená provedení další instrukce, procesor jednoduše vrátí stav zpět a nebere v úvahu spekulativní provedení, ale stopa provedení instrukce zůstane v obecné mezipaměti a je k dispozici pro analýzu. pomocí metod vyhledávání postranního kanálu.

Stejně jako v případě zneužití zranitelnosti Spectre-v1, útok vyžaduje přítomnost určitých sekvencí instrukcí (gadgetů), které vedou ke spekulativnímu provádění v jádře. V tomto případě blokování chyby zabezpečení spočívá v identifikaci takových gadgetů v kódu a přidání dalších instrukcí, které blokují spekulativní provádění. Podmínky pro spekulativní provádění lze také vytvořit pomocí neprivilegovaných programů běžících na virtuálním stroji eBPF. Chcete-li zablokovat možnost vytvářet miniaplikace pomocí eBPF, doporučuje se zakázat neprivilegovaný přístup k eBPF v systému ("sysctl -w kernel.unprivileged_bpf_disabled=1").

Tato chyba zabezpečení se týká procesorů založených na mikroarchitektuře Zen1 a Zen2, včetně první a druhé generace procesorů AMD EPYC a AMD Ryzen Threadripper, a také AMD Ryzen 2000/3000/4000/5000, AMD Athlon, AMD Athlon X, AMD Ryzen Threadripper PRO a APU série A. Pro zablokování provádění spekulativních instrukcí se doporučuje volat instrukce INT3 nebo LFENCE po operacích větvení (RET, JMP, CALL).

Zdroj: opennet.ru

Přidat komentář