Van trobar una vulnerabilitat a cgroups v1 que permet sortir d'un contenidor aïllat

Fa pocs dies es va donar a conèixer la notícia de que s'han revelat els detalls de una vulnerabilitat que va ser trobada en la implementació del mecanisme de limitació de recursos cgroups v1 al kernel de Linux la qual ja està catalogada sota CVE-2022-0492.

Aquesta vulnerabilitat trobada se pot utilitzar per sortir de contenidors aïllats i es detalla que el problema ha estat present des del nucli de Linux 2.6.24.

A la publicació de bloc s'esmenta que la vulnerabilitat es deu a un error lògic al controlador de fitxers release_agent, per això no es van realitzar les comprovacions adequades quan el controlador es va executar amb tots els permisos.

l'arxiu release_agent s'utilitza per definir el programa que executa el nucli quan finalitza un procés a un cgroup. Aquest programa s'executa com a arrel amb totes les «capacitats» a l'espai de noms arrel. Se suposava que només l'administrador tenia accés a la configuració de release_agent, però en realitat, les comprovacions es limitaven a atorgar accés a l'usuari arrel, cosa que no excloïa canviar la configuració des del contenidor o per l'usuari arrel no administratiu (CAP_SYS_ADMIN ).

anteriorment, aquesta característica no s'hauria percebut com una vulnerabilitat, però la situació ha canviat amb l'arribada dels espais de noms d'identificador d'usuari (espais de noms d'usuari), que permeten crear usuaris root separats en contenidors que no se superposen amb l'usuari arrel de l'entorn principal.

En conseqüència, per a un atac, n'hi ha prou en un contenidor que té el seu propi usuari root en un espai d'identificació d'usuari separat per connectar el controlador release_agent, que, un cop completat el procés, s'executarà amb tots els privilegis de l'entorn principal.

Per defecte, cgroupfs es munta en un contenidor de només lectura, però cap problema per tornar a muntar aquest pseudofs en mode d'escriptura amb drets CAP_SYS_ADMIN o creant un contenidor imbricat amb un espai de noms d'usuari separat usant la trucada al sistema per deixar de compartir, on els drets CAP_SYS_ADMIN estan disponibles per al contenidor creat.

l'atac es pot dur a terme tenint privilegis de root en un contenidor aïllat o executant el contenidor sense l'indicador no_new_privs, que prohibeix obtenir privilegis addicionals.

El sistema ha de tenir habilitat el suport per als espais de noms d'usuari (habilitat per defecte a Ubuntu i Fedora, però no habilitat a Debian i RHEL) i tenir accés al cgroup root v1 (per exemple, Docker executa contenidors al cgroup arrel RDMA). L'atac també és possible amb els privilegis CAP_SYS_ADMIN, cas en què no es requereix suport per a espais de noms d'usuari ni accés a la jerarquia arrel de cgroup v1.

A més de sortir del contenidor aïllat, la vulnerabilitat també permet processos iniciats per l'usuari root sense capacitats o qualsevol usuari amb drets CAP_DAC_OVERRIDE (l'atac requereix accés a l'arxiu /sys/fs/cgroup/*/release_agent propietat del root) per obtenir accés a totes les «capacitats» del sistema.

A banda dels contenidors, la vulnerabilitat també pot permetre que els processos de host arrel sense capacitats, o els processos de host no arrel amb la capacitat CAP_DAC_OVERRIDE , augmentin els privilegis i assoleixin totes les capacitats. Això pot permetre als atacants eludir una mesura d'enduriment utilitzada per certs serveis, que eliminen capacitats en un intent de limitar l'impacte si passa un compromís.

Unit 42 recomana als usuaris actualitzar a una versió del nucli fixa. Per a aquells que executen contenidors, habiliteu Seccomp i assegureu-vos que AppArmor o SELinux estiguin habilitats. Els usuaris de Prisma Cloud poden consultar la secció «Proteccions de Prisma Cloud» per veure les mitigacions proporcionades per Prisma Cloud.

S'adverteix que la vulnerabilitat no pot ser explotada en utilitzar mecanismes de protecció Seccomp, AppArmor o SELinux per a aïllament addicional de contenidors, ja que Seccomp bloqueja la trucada al sistema unshare() i AppArmor i SELinux no permeten muntar cgroupfs en mode escriptura.

Finalment cal esmentar que es va solucionar a les versions del nucli 5.16.12, 5.15.26, 5.10.97, 5.4.177, 4.19.229, 4.14.266 i 4.9.301. Podeu seguir la publicació d'actualitzacions de paquets en distribucions en aquestes pàgines: DebianSUSEUbuntuRHELFedoraGentooArch Linux.

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ó.