Včera jsme zde na blogu zveřejnili novinky o Aya, knihovna pro vytváření ovladačů eBPF v Rustu a je, že účelem je vytvořit bezpečnější ovladače nebo Projekt Prossimo pro zajištění paměti linuxového jádra s Rustem (dva skvělé projekty, o kterých bude v následujících měsících hodně mluvit).
A během krátké doby byly hlášeny různé chyby zabezpečení ve kterém využijte chyby v eBPF a že jde o problém, ve kterém vývojáři jádra nepřestali pracovat a možná je tím řešením Rust.
Důvodem pro dotek na toto téma je ten nedávno byla vydána zpráva, kterou identifikovali Chyba zabezpečení „Other“ v jádře Linuxu (CVE-2021-33624) pro obejít ochranu před zranitelnostmi třídy Spectre, protože to umožňuje použít subsystém eBPF, aby bylo možné určit obsah paměti v důsledku vytvoření podmínek pro spekulace o provedení určitých operací.
Uvádí se, že zranitelnost je to způsobeno selháním ověřovatele, který se používá k detekci chyb a neplatné aktivity v programech BPF. Ověřovatel uvádí možné cesty provádění kódu, ale ignoruje všechny možnosti větvení, které nejsou platné z hlediska sémantiky architektury sady instrukcí.
Při spuštění programu BPF může procesor nesprávně předvídat možnosti větvení, které ověřovatel nezohlednil, a provést je ve spekulativním režimu.
V postižených systémech může neprivilegovaný program BPF tuto chybu zabezpečení zneužít k filtrování obsahu paměti libovolného jádra (a tedy veškeré fyzické paměti) přes postranní kanál.
Např při analýze operace „načítání“ ověřovatel předpokládá, že instrukce používá registr s adresou, jejíž hodnota je vždy ve stanovených mezích, ale útočník může vytvořit podmínky pod kterými procesor se bude spekulativně pokoušet provést obchod s adresou, která nesplňuje podmínky pro ověření.
Strašidelný útok vyžaduje přítomnost konkrétního skriptu v privilegovaném kódu, což vede ke spekulativnímu provádění pokynů. Manipulací s programy BPF, které jsou předány k provedení, je možné vygenerovat takové instrukce v eBPF a filtrovat obsah paměti jádra a libovolné oblasti fyzické paměti bočními kanály.
Navíc, můžete označit poznámku o dopadu na výkon aktiv k ochraně před třídou zranitelností Spectre.
Tato poznámka shrnuje výsledky debugger optimization rr (Record and Replay), once created by Mozilla to debug hard-to-repeat errors in Firefox. Ukládání do mezipaměti systémových volání použitých k ověření existence adresářů snížilo operaci "rr sources" pro testovací projekt ze 3 minut 19 sekund na 36 sekund.
Autor optimalizace se rozhodl zkontrolovat kolik se změní výkon po deaktivaci ochrany Spectre. Po zavedení systému s parametrem „mitigations = off“ byla doba spuštění „rr sources“ bez optimalizace 2 minuty 5 sekund (1.6krát rychlejší) a s optimalizací 33 sekund (9% rychlejší).
Zvědavě, deaktivace ochrany Spectre nejen snížila dobu provádění kódu na úrovni jádra za 1.4 krát (od 2 min 9 s do 1 min 32 s), také to snížilo dobu provádění v uživatelském prostoru na polovinu (od 1 min 9 s do 33 s), pravděpodobně kvůli snížení účinnosti mezipaměti CPU a TLB se resetují, když je aktivována ochrana Spectre.
Problém se objevil od vydání jádra 4.15 a byl opraven ve formě oprav, které v tuto chvíli stále nedosahují všech distribucí, takže se uživatelům doporučuje, aby v těchto dnech prováděli příslušné aktualizace, jakmile obdrží oznámení.
Si chcete o tom vědět víc, můžete zkontrolovat podrobnosti Na následujícím odkazu.