A Firejail alkalmazás elszigetelt futtatóeszközében biztonsági rés (CVE-2022-31214) található, amely lehetővé teszi a helyi felhasználó számára, hogy root jogosultságokat szerezzen a fő rendszeren. Egy működő exploit szabadon elérhető, amelyet az openSUSE, Debian, Arch, Gentoo és Fedora aktuális verzióiban teszteltek a firejail alkalmazás telepített állapotában. A problémát a firejail 0.9.70-es verziójában orvosolták. Védelmi megoldásként beállíthatók az '/etc/firejail/firejail.config' fájlban a "join no" és a "force-nonewprivs yes" paraméterek.
A Firejail a nevében lévő mechanizmusokat (namespace) használja az izolálás számára, az AppArmor-t és a rendszerhívások szűrését (seccomp-bpf) a Linux alatt, de az elszigetelt futtatás beállításához emelt jogosultságokra van szükség, amelyeket a suid root flaghez való kötődéssel vagy sudo használatával szerez meg. A biztonsági rés az '—join=' opció működésének logikai hibájából ered, amely az már futó elszigetelt környezethez (a sandbox környezet belépő parancsának megfelelően) történő csatlakozásra szolgál, és a környezet meglévő folyamatazonosítója alapján határozza meg. A privilégiumok megszüntetése előtt a firejail meghatározza a megadott folyamat privilégiumait, és alkalmazza azokat az új folyamatra, amely a '—join' opcióval csatlakozik a környezethez.
A csatlakozás előtt ellenőrzés történik, hogy a megadott folyamat a firejail környezetében futhat-e. Ez az ellenőrzés a '/run/firejail/mnt/join' fájl meglétét értékeli. Az exploitáláshoz a támadó szimulálhat egy ál-elszigetelt firejail környezetet a mount namespace használatával, majd a '—join' opcióval csatlakozhat hozzá. Ha a beállítások között nincs aktiválva az új folyamatokban történő emelt privilegizációk megszerzésének tilalma (prctl NO_NEW_PRIVS), a firejail csatlakoztatja a felhasználót az ál-környezethez, és megpróbálja alkalmazni a felhasználói azonosító namespace beállításait az init folyamat (PID 1) számára.
A csatlakoztatott folyamat, amely a „firejail —join” paranccsal indult, a felhasználó kezdeti felhasználói azonosítók névtérben marad megváltoztathatatlan privilégiumokkal, de egy másik, az támadó által teljesen kontrollált csatolási névtérben. Az támadó például setuid-root programokat futtathat a létrehozott csatolási nézeteiben, ami lehetővé teszi, hogy például megváltoztassa a /etc/sudoers beállításait vagy a PAM paramétereit a saját fájlrendszerében, és ezzel root jogokkal parancsokat hajtson végre a sudo vagy su segédprogramok segítségével.
Forrás: opennet.ru
