Zranitelnost VFS jádra Linuxu umožňující eskalaci oprávnění

Byla identifikována chyba zabezpečení (CVE-2022-0185) v rozhraní Filesystem Context API poskytovaném linuxovým jádrem, která by mohla umožnit místnímu uživateli získat v systému oprávnění root. Výzkumník, který problém identifikoval, zveřejnil ukázku exploitu, který umožňuje spouštění kódu jako root na Ubuntu 20.04 ve výchozí konfiguraci. Využívání kódu je plánováno na zveřejnění na GitHubu do týdne poté, co distribuce uvolní aktualizaci opravující zranitelnost.

Tato chyba zabezpečení existuje ve funkci legacy_parse_param() ve VFS a je způsobena nedostatečným řádným ověřením maximální velikosti parametrů poskytovaných na souborových systémech, které nepodporují Filesystem Context API. Pokud předáte příliš velký parametr, můžete způsobit přetečení celočíselné proměnné používané k výpočtu velikosti zapisovaných dat - kód má kontrolu přetečení vyrovnávací paměti "if (len > PAGE_SIZE - 2 - size)", což dělá nefunguje, pokud je hodnota size větší než 4094 kvůli přetečení celého čísla přes spodní hranici (podtečení celého čísla, když přetypujete 4096 - 2 - 4095 na unsigned int, dostanete 2147483648).

Tato chyba umožňuje při přístupu ke speciálně navrženému obrazu FS způsobit přetečení vyrovnávací paměti a přepsat data jádra po přidělené oblasti paměti. Pro zneužití zranitelnosti jsou vyžadována práva CAP_SYS_ADMIN, tzn. administrátorské oprávnění. Problém je v tom, že neprivilegovaný uživatel může získat taková oprávnění v izolovaném kontejneru, pokud je v systému povolena podpora jmenných prostorů uživatelů. Například uživatelské jmenné prostory jsou ve výchozím nastavení povoleny na Ubuntu a Fedoře, ale nejsou povoleny na Debianu a RHEL (pokud nepoužíváte platformy pro izolaci kontejnerů).

Problém se projevuje již od jádra Linuxu 5.1 a byl opraven ve včerejších aktualizacích 5.16.2, 5.15.16, 5.10.93, 5.4.173. Aktualizace balíčků zranitelnosti již byly vydány pro RHEL, Debian, Fedora, Ubuntu. Oprava zatím není k dispozici na Arch Linux, Gentoo, SUSE a openSUSE. Jako řešení zabezpečení pro systémy, které nepoužívají izolaci kontejnerů, můžete nastavit hodnotu sysctl "user.max_user_namespaces" na 0: echo "user.max_user_namespaces=0" > /etc/sysctl.d/userns.conf # sysctl -p / atd/ sysctl.d/userns.conf

Zdroj: opennet.ru

Přidat komentář