V utilitě pro izolované spouštění aplikací Firejail byla identifikována zranitelnost (CVE-2022-31214), která umožňuje lokálnímu uživateli získat práva root v hlavním systému. Ve veřejném dostupnosti existuje funkční exploit, který byl otestován na aktuálních vydáních openSUSE, Debian, Arch, Gentoo a Fedora s nainstalovanou utilitou firejail. Problém byl vyřešen ve verzi firejail 0.9.70. Jako obranou možností je možné v nastavení (/etc/firejail/firejail.config) nastavit parametry „join no“ a „force-nonewprivs yes”.
Firejail používá k izolaci mechanismus prostorů názvů (namespaces), AppArmor a filtrování systémových volání (seccomp-bpf) v Linuxu, avšak pro nastavení izolovaného spuštění vyžaduje zvýšené privilégia, která získává pomocí připojení k utilitě s flaagem suid root nebo spuštěním pomocí sudo. Zranitelnost je způsobena chybou v logice volby „—join=“, která je určena pro připojení k již běžícímu izolovanému prostředí (analog commands login pro sandboxové prostředí) s určením prostředí podle probíhajícího identifikátoru procesu. V době před odebráním privilégii firejail určuje privilégií daného procesu a aplikuje je na nový proces, který se připojuje k prostředí pomocí volby „—join“.
Před připojením probíhá kontrola, zda je uvedený proces spuštěn v prostředí firejail. Tato kontrola vyhodnocuje přítomnost souboru /run/firejail/mnt/join. Pro zneužití zranitelnosti útočník může simulovat neizolované prostředí firejail, pomocí prostoru montážních bodů (mount namespace), a poté se k němu připojit pomocí volby „—join“. Pokud není v nastavení aktivován režim zákazu získávání dalších privilégií v nových procesech (prctl NO_NEW_PRIVS), firejail připojí uživatele k fiktivnímu prostředí a pokusí se aplikovat nastavení prostoru názvů identifikátorů uživatelů (user namespace) procesu init (PID 1).
Nakonec bude proces připojený přes „firejail —join“ v původním prostoru uživatelských ID s nezměněnými privilegii, avšak v jiném prostoru montážních bodů, zcela kontrolovaném útočníkem. Útočník může také spouštět programy setuid-root v jeho vlastním prostoru montážních bodů, což mu umožňuje například změnit nastavení /etc/sudoers nebo parametry PAM ve své souborové hierarchii a získat tak možnost vykonávat příkazy s právy root pomocí utilit sudo nebo su.
Zdroj: opennet.ru
