Van detectar una vulnerabilitat en firejail que permetia l'accés root al sistema

Fa poc van donar a conèixer la notícia que va ser identificada una vulnerabilitat (ja catalogada sota CVE-2022-31214) a l'eina de sandboxing de l'aplicació Firejail, es detalla que la fallada detectada podria permetre que un usuari local es converteixi en root al sistema host.

Firejail utilitza el mecanisme d'espais de noms, AppArmor i el filtratge de trucades del sistema (seccomp-bpf) a Linux per a l'aïllament, però requereix privilegis elevats per configurar un llançament aïllat, que obté en vincular-se a la utilitat d'indicador arrel suid o executar amb suo.

La vulnerabilitat es deu a un error a la lògica de l'opció «–join= », dissenyada per connectar-se a un entorn aïllat que ja s'està executant (similar a l'ordre d'inici de sessió per a un entorn sandbox) amb la definició de l'entorn per l'ID del procés que s'hi executa. A la fase prèvia al llançament, firejail detecta els privilegis del procés especificat i els aplica al nou procés que s'uneix a l'entorn amb l'opció “–join”.

Abans de connectar-se, verifica si el procés especificat s'està executant a l'entorn firejail. Aquesta verificació avalua l'existència del fitxer /run/firejail/mnt/join. Per aprofitar la vulnerabilitat, un atacant pot simular un entorn firejail fictici no aïllat utilitzant l'espai de noms de muntatge i després connectar-s'hi mitjançant l'opció “–join”.

Si la configuració no habilita la manera de prohibir l'obtenció de privilegis addicionals en processos nous (prctl NO_NEW_PRIVS), firejail connectarà l'usuari a un entorn fictici i intentarà aplicar la configuració de l'espai de noms d'usuari dels identificadors d'usuari (espai de noms d'usuari) del procés init (PID 1).

La major part de la lògica darrere de la funció d'unió es troba al codi font del fitxer `src/firejail/join.c`. Les seccions crítiques de codi s'executen amb privilegis elevats (UID efectiu 0). L'ID del procés passat com a ordre l'argument de línia s'inspecciona per determinar si és un recipient i determinar algunes de les seves propietats que s'aplica igualment al procés de nou ingrés.

El criteri principal per decidir si unir-se al procés de destinació té èxit és la presència dun arxiu en lespai de noms de muntatge de lobjectiu, procés trobat a /run/firejail/mnt/join. Aquesta verificació es realitza a la funció `is_ready_for_join()`. El fitxer s'obre usant las banderes `O_RDONLY|O_CLOEXEC` i el resultat `fstat()` de seguiment deuen complir amb els següents requisits:

– el fitxer ha de ser un fitxer normal.
– el fitxer ha de ser propietat de l'ID d'usuari 0 (com es veu des de l'usuari inicial
espai de noms).
– el fitxer ha de tenir una mida de 1 byte.

Com a resultat, el procés connectat a través de firejail –join acabarà a l'espai de noms d'ID d'usuari original de l'usuari amb privilegis sense canvis, però en un espai de punt de muntatge diferent completament controlat per l'atacant.

L'intèrpret d'ordres «unit» resultant ara viurà a l'usuari inicial
espai de noms, mantenint encara els privilegis dusuari normals originals, però l'espai de noms de muntatge serà el que controli l'atacant. Ja que
la configuració nonewprivs no s'ha aplicat, ara l'atacant pot
executar programes setuid-root dins aquest espai de noms de muntatge

En particular, un atacant pot executar programes setuid-root a l'espai del punt de muntatge que va crear, cosa que permet, per exemple, canviar la configuració de /etc/sudoers o els paràmetres PAM a la seva jerarquia d'arxius i obtenir la capacitat de executar ordres com a root usant el suo o les seves utilitats.

Finalment, cal esmentar que s'ha desenvolupat un exploit funcional, provat a les versions actuals d'openSUSE, Debian, Arch, Gentoo i Fedora amb la utilitat firejail instal·lada.

El problema es va solucionar a la versió firejail 0.9.70. Com a solució de seguretat, podeu establir la configuració (/etc/firejail/firejail.config) per «no unir-se» i «forçar-nonewprivs sí».

Finalment si estàs interessat en poder conèixer més a l'respecte, Pots consultar els detalls al següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.