Místní kořenové chyby v sadě nástrojů pro správu balíčků Snap

Qualys identifikoval dvě zranitelnosti (CVE-2021-44731, CVE-2021-44730) v obslužném programu snap-confine, který je dodáván s kořenovým příznakem SUID a volán procesem snapd, aby se vytvořilo spustitelné prostředí pro aplikace dodávané v samostatných balíčcích. ve formátu snap. Tyto chyby zabezpečení umožňují místnímu neprivilegovanému uživateli spouštět v systému kód s oprávněními root. Problémy jsou vyřešeny v dnešní aktualizaci balíčku snapd pro Ubuntu 21.10, 20.04 a 18.04.

První zranitelnost (CVE-2021-44730) umožňuje útok prostřednictvím manipulace s pevnými odkazy, ale vyžaduje deaktivaci ochrany pevného připojení systému (nastavení sysctl fs.protected_hardlinks na 0). Problém je způsoben nesprávným ověřením umístění spustitelných souborů pomocných programů snap-update-ns a snap-discard-ns spuštěných jako root. Cesta k těmto souborům byla vypočtena ve funkci sc_open_snapd_tool() na základě vlastní cesty z /proc/self/exe, která vám umožňuje vytvořit pevný odkaz na snap-confine ve vašem adresáři a umístit své vlastní verze snap- update-ns a snap-utilities v tomto adresáři discard-ns. Po spuštění přes pevný odkaz spustí snap-confine s právy root soubory snap-update-ns a snap-discard-ns z aktuálního adresáře, které nahradí útočník.

Druhá chyba zabezpečení je způsobena sporem a lze ji zneužít ve výchozí konfiguraci Ubuntu Desktop. Aby exploit na Ubuntu Serveru fungoval úspěšně, musíte při instalaci vybrat jeden z balíčků ze sekce „Featured Server Snaps“. Spor je evidentní ve funkci setup_private_mount() volané během přípravy jmenného prostoru bodu připojení pro balíček snap. Tato funkce vytvoří dočasný adresář „/tmp/snap.$SNAP_NAME/tmp“ nebo použije existující k navázání a připojení adresářů pro balíček snap do něj.

Vzhledem k tomu, že název dočasného adresáře je předvídatelný, může útočník po kontrole vlastníka, ale před voláním systémového volání mount, nahradit jeho obsah symbolickým odkazem. Můžete například vytvořit symbolický odkaz "/tmp/snap.lxd/tmp" v adresáři /tmp/snap.lxd ukazující na libovolný adresář a volání funkce mount() bude následovat za symbolickým odkazem a připojí adresář do přichytit jmenný prostor. Podobným způsobem můžete připojit svůj obsah do /var/lib a nahrazením /var/lib/snapd/mount/snap.snap-store.user-fstab uspořádat připojení vašeho adresáře /etc do jmenného prostoru balíček snap pro organizaci načítání vaší knihovny s právy root nahrazením /etc/ld.so.preload.

Je třeba poznamenat, že vytvoření exploitu se ukázalo jako netriviální úkol, protože obslužný program snap-confine je napsán v Go pomocí technik bezpečného programování, má ochranu založenou na profilech AppArmor, filtruje systémová volání na základě mechanismu seccomp a používá jmenný prostor připojení pro izolaci. Výzkumníci však byli schopni připravit pracovní exploit k získání práv root v systému. Exploit kód bude zveřejněn za několik týdnů poté, co uživatelé nainstalují poskytované aktualizace.

Zdroj: opennet.ru

Přidat komentář