Vulnerabilità in firejail che consente l'accesso root al sistema

È stata identificata una vulnerabilità (CVE-2022-31214) nell'utilità di isolamento dell'applicazione Firejail che consente a un utente locale di ottenere privilegi root sul sistema host. È disponibile un exploit funzionante di pubblico dominio, testato nelle versioni attuali di openSUSE, Debian, Arch, Gentoo e Fedora con l'utilità firejail installata. Il problema è stato risolto nella versione Firejail 0.9.70. Come soluzione alternativa alla protezione, è possibile impostare i parametri "join no" e "force-nonewprivs yes" nelle impostazioni (/etc/firejail/firejail.config).

Firejail utilizza gli spazi dei nomi, AppArmor e il filtro delle chiamate di sistema (seccomp-bpf) in Linux per l'isolamento, ma richiede privilegi elevati per impostare l'esecuzione isolata, che ottiene attraverso l'associazione al flag dell'utilità suid root o l'esecuzione con sudo. La vulnerabilità è causata da un errore nella logica dell'opzione “--join=". ", destinato alla connessione a un ambiente isolato già in esecuzione (analogo al comando di accesso per un ambiente sandbox) con la definizione dell'ambiente tramite l'identificatore del processo in esecuzione in esso. Durante la fase di ripristino dei pre-privilegi, firejail determina i privilegi del processo specificato e li applica al nuovo processo connesso all'ambiente utilizzando l'opzione "-join".

Prima di connettersi, controlla se il processo specificato è in esecuzione nell'ambiente firejail. Questo controllo valuta la presenza del file /run/firejail/mnt/join. Per sfruttare la vulnerabilità, un utente malintenzionato può simulare un ambiente firejail fittizio e non isolato utilizzando lo spazio dei nomi mount e quindi connettersi ad esso utilizzando l'opzione "--join". Se le impostazioni non abilitano la modalità di proibizione dell'acquisizione di privilegi aggiuntivi nei nuovi processi (prctl NO_NEW_PRIVS), firejail collegherà l'utente a un ambiente fittizio e tenterà di applicare le impostazioni dello spazio dei nomi utente del processo init (PID 1).

Di conseguenza, il processo connesso tramite "firejail -join" finirà nello spazio dei nomi dell'ID utente originale dell'utente con privilegi invariati, ma in uno spazio del punto di montaggio diverso, completamente controllato dall'aggressore. Un utente malintenzionato può anche eseguire programmi setuid-root nello spazio dei mount point da lui creato, il che consente, ad esempio, di modificare le impostazioni /etc/sudoers o i parametri PAM nella sua gerarchia di file e di poter eseguire comandi con diritti di root utilizzando sudo o su utilità.

Fonte: opennet.ru

Aggiungi un commento