Před několika dny byla zveřejněna zpráva, že v Netfilteru byla zjištěna chyba zabezpečení (Linuxový subsystém jádra používaný k filtrování a úpravě síťových paketů), který umožňuje místnímu uživateli získat oprávnění root v systémui když jste v izolované nádobě.
Chyba zabezpečení CVE-2021-22555 je to problém, který existuje již od jádra 2.6.19, spuštěno před 15 lety a je způsobená chybou v ovladačích IPT_SO_SET_REPLACE a IP6T_SO_SET_REPLACE, což způsobí přetečení vyrovnávací paměti při odesílání speciálně zdobených parametrů prostřednictvím volání setsockopt v režimu kompatibility.
Možná si mnozí v tomto okamžiku budou klást otázku, jak je možné, že chyba v linuxovém jádře mohla zůstat tak dlouho bez povšimnutí a odpověď na to je, že i když chyba, která existovala od Linuxu 2.6.19, byla chyba nalezena prostřednictvím kódu audit, přestože kód C nebyl reprodukovatelný, takže jej nebylo možné zneužít, protože v té době nebyly nalezeny prostředky nezbytné k eskalaci oprávnění.
Například podpora pro neprivilegované uživatelské jmenné prostory je v jádře 3.8. Některé distribuce mají také opravu, která přidává sysctl k deaktivaci neprivilegovaných jmenných prostorů uživatelů.
Za normálních okolností může pouze uživatel root volat compat_setsockopt ()Ale potřebná oprávnění provést útok mohou být také získány neprivilegovaným uživatelem v systémech s povolenými jmennými prostory uživatelů.
CVE-2021-22555 je 15 let stará chyba zabezpečení při zápisu do zásobníku v systému Linux Netfilter, která je dostatečně výkonná, aby obešla všechna moderní omezení zabezpečení a dosáhla spuštění kódu jádra.
Jako takové je to popsáno místní uživatel může vytvořit kontejner se samostatným uživatelem root a odtamtud zneužít tuto chybu zabezpečeníí. Například „uživatelské jmenné prostory“ jsou standardně zahrnuty v Ubuntu a Fedoře, ale ne v Debianu a RHEL.
Tuto chybu zabezpečení lze zneužít částečným přepsáním souboru
m_list->next
ukazatelmsg_msg
struktura a dosažení volného po použití. To je dost silné na to, aby váš kód jádra fungoval obejít KASLR, SMAP a SMEP.
Problém také nastává ve funkci xt_compat_target_from_user () kvůli nesprávnému výpočtu velikosti paměti při ukládání struktur jádra po převodu z 32bitové na 64bitovou reprezentaci.
Jako takové je uvedeno, že chyba umožňuje zapsat čtyři „nulové“ bajty na libovolnou pozici mimo vyrovnávací paměť přiřazeno, omezeno offsetem 0x4C. Z tohoto důvodu je uvedeno, že tato funkce se ukázala jako dostatečná k vytvoření zneužití který umožňuje získat práva root: odstraněním m_list-> dalšího ukazatele ve struktuře msg_msg byly vytvořeny podmínky pro přístup k datům po uvolnění paměti (use-after-free), která byla poté použita k získání informací o adresách a změny jiných struktur manipulací se systémovým voláním msgsnd ().
Pokud jde o hlášení o chybě, jako každá zjištěná chyba zabezpečení, jedná se o proces a zprávu, která byla vytvořena vývojářům jádra v dubnu, a poté byla za pár dní opravena a oprava, která je součástí všech podporovaných distribucí, takže tyto informace o chybě mohou být zveřejněny později.
Projekty Debian, Arch Linux a Fedora již vygenerovaly aktualizace balíčků. Počínaje aktualizacemi Ubuntu, RHEL a SUSE jsou v provozu. Protože chyba je vážná, v praxi využitelná a umožňuje únik z kontejneru, Google odhadl svůj objev na 10,000 XNUMX $ a zdvojnásobil odměnu výzkumníkovi, který tuto chybu zabezpečení identifikoval, a za identifikaci metody, jak zabránit izolaci kontejnerů Kubernetes v klastru kCTF.
Pro testování byl připraven funkční prototyp exploitu který obchází ochranné mechanismy KASLR, SMAP a SMEP.
Konečně pokud se o tom chcete dozvědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.