Před pár dny Qualys zveřejnil zprávu, že identifikoval vážnou zranitelnoste (již katalogováno pod CVE-2022-3328) v obslužném programu snap-confine, který je dodáván s kořenovým příznakem SUID a je volán procesem snapd, aby vytvořil spustitelné prostředí pro aplikace distribuované v balíčcích ve formátu snap.
Tato chyba zabezpečení údajně umožňuje neprivilegovanému místnímu uživateli dosáhnout spuštění kódu jako root ve výchozí konfiguraci Ubuntu.
Zajímavé je, že dotyčná zranitelnost byla zavedena v procesu opravy podobné zranitelnosti z února v rychlém omezení.
Jaký dopad má CVE-2022-3328?
Qualys ve své zprávě uvádí, že zranitelnost snap-confine je způsobené sporem ve funkci must_mkdir_and_open_with_perms(), přidáno k ochraně před nahrazením adresáře /tmp/snap.$SNAP_NAME symbolickým odkazem po ověření vlastníka, ale předtím, než je zavoláno systémové volání mount, které do něj sváže adresáře pro připojení pro balíček ve formátu span .
Přidané zabezpečení spočívalo v přejmenování adresáře /tmp/snap.$SNAP_NAME na jiný adresář v /tmp s náhodným názvem, pokud existuje a není vlastněn uživatelem root.
Využitím operace přejmenování z adresáře /tmp/snap.$SNAP_NAME, výzkumníci využili toho, že snap-confine také vytváří adresář /tmp/snap.rootfs_x pro obsah balíčku snap. mkdtemp(), která náhodně vybere část "x" jména, ale balíček s názvem "rootfs_x" může projít sc_instance_name_validate (tj. myšlenka je mít $SNAP_NAME nastavený na "rootfs_x" a operace přejmenování bude mít za následek přepsání adresáře /tmp/snap.rootfs_x uživatelem root při snapu).
Pro dosažení současného použití z /tmp/snap.rootfs_xx a přejmenování /tmp/snap.$SNAP_NAME, byly zahájeny dva případy snap-confine.
Jakmile první instance vytvoří /tmp/snap.rootfs_xx proces byl zablokován a byla zahájena druhá instance s názvem balíčku rootfs_x, což způsobilo, že se z dočasného adresáře druhé instance /tmp/snap.$SNAP_NAME stal /tmp/snap .rootfs_x (kořenový adresář) první instance.
Ihned po provedení změny názvu se druhá instance nezdařila a /tmp/snap.rootfs_x byl nahrazen manipulací s race condition, jako v únorovém exploitu. Po změně byl zámek provedení odstraněn z první instance a útočníci získali plnou kontrolu nad okamžitým kořenovým adresářem.
Posledním krokem bylo vytvoření symbolického odkazu /tmp/snap.rootfs_x/tmp který byl použit funkcí sc_bootstrap_mount_namespace() k navázání a připojení skutečného zapisovatelného adresáře /tmp do libovolného adresáře v souborovém systému, protože volání mount() před připojením následuje po symbolických odkazech. Takové připojení je blokováno omezeními AppArmor, ale k obejití tohoto bloku využil exploit dvě zranitelnosti. pomocníci v multipathd.
Úspěšné využití všech tří zranitelností umožňuje jakémukoli neprivilegovanému uživateli získat práva root na zranitelném zařízení. Bezpečnostní výzkumníci Qualys ověřili zranitelnost, vyvinuli exploit a získali plná oprávnění root ve výchozích instalacích Ubuntu.
Jakmile byla zranitelnost potvrzena oddělením Qualys Threat Research Unit, zapojili jsme se do zodpovědného odhalování zranitelnosti a koordinovali jsme s prodejci a distribucemi open source oznámení o této nově objevené zranitelnosti.
Vědcům se podařilo připravit pracovní exploit který poskytuje root přístup na Ubuntu Server 22.04, který kromě zranitelnosti snap-confine zahrnuje také dvě zranitelnosti v multipathd procesu (CVE-2022-41974, CVE-2022-41973) související s obcházením oprávnění při předávání privilegovaných příkazů a nejisté zacházení se symbolickými odkazy.
Za zmínku stojí problém byl opraven ve verzi snapd 2.57.6, Kromě toho byly vydány aktualizace balíčků pro všechny podporované větve Ubuntu.
Konečně, pokud máte zájem dozvědět se o tom více, můžete konzultovat podrobnosti Na následujícím odkazu.