Nedávno to zprávy prolomily byla zjištěna zranitelnost (CVE-2021-29154) v subsystému eBPF, který strUmožňuje sledování běhu, analýzu subsystému a řadiče řízení provozu běží uvnitř jádra Linuxu ve speciálním virtuálním stroji JIT, který umožňuje místnímu uživateli spustit váš kód na úrovni jádra.
Podle vědců, kteří identifikovali tuto chybu zabezpečení, dokázali vyvinout funkční prototyp zneužití pro 86bitové a 32bitové systémy x64, který může používat neprivilegovaný uživatel.
Současně Red Hat konstatuje, že závažnost problému závisí na dostupnosti systémového volání eBPF. pro uživatele. Například ve výchozím nastavení na RHEL a většině ostatních distribucí Linuxu lze tuto chybu zabezpečení zneužít, pokud je povolen BPF JIT a uživatel má práva CAP_SYS_ADMIN.
V linuxovém jádře byl objeven problém, který mohou zneužít
neprivilegovaní místní uživatelé k eskalaci oprávnění.Problém je v tom, jak překladače BPF JIT počítají pro některé architektury
Offsety větve při generování strojového kódu. To lze zneužít
vytvořit neobvyklý strojový kód a spustit jej v režimu jádra,
kde je tok kontroly unesen za účelem spuštění nezabezpečeného kódu.
A je to tím, že to podrobně popisují problém je způsoben chybou, která je generována při výpočtu posunutí větvících instrukcí během kompilátoru JIT, který generuje strojový kód.
Zejména je zmíněno, že při generování větvových instrukcí se nebere v úvahu, že se posunutí může změnit po absolvování fáze optimalizace, takže tuto chybu lze použít ke generování anomálního strojového kódu a jeho spuštění na úrovni. .
Je třeba poznamenat, že Toto není jediná zranitelnost v subsystému eBPF, která je známá v posledních letech, od konce března byly v jádře identifikovány další dvě chyby zabezpečení (CVE-2020-27170, CVE-2020-27171), které poskytují možnost používat eBPF k obejití ochrany před zranitelnostmi třídy Spectre, což umožňuje určit obsah paměti jádra a má za následek vytvoření podmínek pro spekulativní provádění určitých operací.
Útok Spectre vyžaduje přítomnost konkrétní sekvence příkazů v privilegovaném kódu, což vede ke spekulativnímu provádění pokynů. V eBPF bylo nalezeno několik způsobů generovat takové instrukce prostřednictvím manipulací s programy BPF přenášenými pro jejich provedení.
- Chyba zabezpečení CVE-2020-27170 je způsobena manipulacemi ukazatelů v kontrole BPF, což způsobuje spekulativní operace pro přístup do oblasti mimo vyrovnávací paměť.
- Chyba zabezpečení CVE-2020-27171 souvisí s chybou podtečení celého čísla při práci s ukazateli, což vede ke spekulativnímu přístupu k datům mimo mezipaměť.
Tyto problémy již byly opraveny ve verzích jádra 5.11.8, 5.10.25, 5.4.107, 4.19.182 a 4.14.227 a byly zahrnuty do aktualizací jádra pro většinu distribucí Linuxu. Vědci připravili prototyp zneužití, který umožňuje neprivilegovanému uživateli načítat data z paměti jádra.
Pokud jde o jedno z řešení, která Red Hat navrhuje:
Zmírnění:
Tento problém ve výchozím nastavení neovlivňuje většinu systémů. Správce by musel povolit ovlivnění JIT BPF.
Lze jej okamžitě deaktivovat pomocí příkazu:
# echo 0 > /proc/sys/net/core/bpf_jit_enableNebo to může být zakázáno pro všechny následné spuštění systému nastavením hodnoty v /etc/sysctl.d/44-bpf -jit-disable
## start file ## net.core.bpf_jit_enable=0</em> end file ##
Konečně pokud máte zájem o tom vědět více o této chybě zabezpečení můžete zkontrolovat podrobnosti v následující odkaz.
Stojí za zmínku, že problém přetrvává až do verze 5.11.12 (včetně) a dosud nebyl vyřešen ve většině distribucí, přestože oprava je již zavedena. k dispozici jako oprava.