CVE-2022-0492: Vulnerabilidad de Escalada de Privilegios en el Kernel de Linux mediante cgroups v1
Introducción
En febrero de 2022, investigadores de seguridad identificaron una vulnerabilidad crítica en el kernel de Linux catalogada como CVE-2022-0492, clasificada con una puntuación CVSS de 7.8 (HIGH). La vulnerabilidad fue añadida al catálogo de vulnerabilidades explotadas activamente (KEV) de la CISA, lo que confirma su explotación real en entornos productivos. Esta falla afecta la funcionalidad release_agent del subsistema cgroups v1 (Control Groups versión 1) del kernel de Linux, y permite a un atacante con acceso local sin privilegios escalar a nivel de root, representando una amenaza significativa para servidores, sistemas embebidos, entornos en la nube y contenedores.
La clasificación de debilidades asociadas incluye CWE-287 (Autenticación Incorrecta) y CWE-862 (Falta de Autorización), lo que indica que el kernel no verificaba adecuadamente los permisos de los procesos que intentaban modificar atributos sensibles del subsistema de cgroups.
Análisis Técnico
Los Control Groups (cgroups) son una característica fundamental del kernel de Linux que permite limitar, auditar y aislar el uso de recursos (CPU, memoria, I/O, red) de grupos de procesos. La versión 1 de esta interfaz (cgroups v1) incluye un mecanismo denominado release_agent, un archivo especial que, cuando está configurado, ejecuta un programa determinado en el espacio de nombres (namespace) raíz cuando el último proceso de un cgroup termina.
El problema central radica en que el kernel no aplicaba correctamente las comprobaciones de capacidades (capabilities) necesarias al momento de escribir en el archivo /sys/fs/cgroup/memory/release_agent (o equivalente según el subsistema). Específicamente, un proceso sin los privilegios adecuados podía escribir una ruta arbitraria en dicho archivo. Cuando el cgroup quedaba vacío, el kernel ejecutaba ese binario con privilegios de root en el namespace de red del sistema anfitrión (host network namespace), logrando así una escalada de privilegios efectiva.
El parche oficial fue integrado por Linus Torvalds en el árbol principal del kernel. El commit de corrección verifica correctamente que el proceso que intenta escribir en release_agent posea la capacidad CAP_SYS_ADMIN dentro del namespace de usuario raíz, cerrando así el vector de ataque. Puede consultarse el commit en el repositorio oficial:
Esta vulnerabilidad es especialmente peligrosa en escenarios de escape de contenedores. Si un contenedor Docker, LXC o Kubernetes se ejecuta con configuraciones permisivas (por ejemplo, con el flag --privileged o con acceso al namespace de usuario del host), un atacante que comprometa dicho contenedor puede aprovechar CVE-2022-0492 para escapar al sistema anfitrión y tomar control total del nodo.
Flujo de Explotación Resumido
- El atacante obtiene ejecución de código dentro de un contenedor o como usuario sin privilegios en el sistema anfitrión.
- Monta o localiza una jerarquía de cgroups v1 accesible con escritura en
release_agent. - Escribe una ruta de binario malicioso en
release_agentsin que el kernel valide la capacidadCAP_SYS_ADMIN. - Fuerza la terminación del cgroup creando y vaciando un subgrupo efímero.
- El kernel ejecuta el binario malicioso como root en el namespace del host, logrando escalada de privilegios o escape de contenedor.
Impacto
El impacto de esta vulnerabilidad es severo en múltiples contextos:
- Escalada de privilegios local: Cualquier usuario sin privilegios puede obtener acceso root en sistemas que no hayan aplicado el parche.
- Escape de contenedores: En entornos de orquestación de contenedores (Kubernetes, Docker Swarm, OpenShift), un atacante puede comprometer el nodo anfitrión desde un pod o contenedor.
- Infraestructuras cloud y multi-tenant: Plataformas que comparten kernel entre múltiples instancias (como ciertos entornos PaaS) son especialmente vulnerables, ya que el compromiso de un tenant podría afectar a otros.
- Persistencia y movimiento lateral: Tras la escalada, el atacante dispone de acceso root completo para instalar rootkits, exfiltrar datos o pivotar hacia otros sistemas de la red.
Aunque el uso de esta vulnerabilidad en campañas de ransomware se clasifica actualmente como Unknown (desconocido) según el catálogo KEV de CISA, su presencia en dicho catálogo confirma explotación activa en la naturaleza. La facilidad de explotación y su aplicabilidad en entornos de contenedores la convierten en una herramienta atractiva para actores de amenaza avanzados (APT) y operadores de ransomware que buscan maximizar su impacto post-compromiso.
Productos Afectados
Esta vulnerabilidad afecta al kernel de Linux en versiones anteriores a la corrección integrada en las series estables. Dado que el kernel de Linux es un componente transversal, la afectación es extremadamente amplia:
- Distribuciones Linux empresariales: Red Hat Enterprise Linux (RHEL), CentOS, Rocky Linux, AlmaLinux, SUSE Linux Enterprise Server (SLES), Ubuntu LTS, Debian.
- Plataformas de contenedores: Docker Engine, containerd, Podman, LXC/LXD, Kubernetes (nodos worker con kernel sin parchear).
- Servicios en la nube: Instancias de máquinas virtuales o bare-metal que ejecuten kernels Linux sin parchear en AWS, GCP, Azure u otros proveedores.
- Dispositivos embebidos y IoT basados en kernel Linux que utilicen cgroups v1.
- Sistemas Android basados en kernels Linux vulnerables (según versión de fabricante).
Se recomienda verificar con cada proveedor específico el estado del parche, tal como indica la entrada oficial en el NVD (NIST).
Recomendaciones y Mitigaciones
La CISA insta a las organizaciones afectadas a aplicar las mitigaciones del fabricante siguiendo la guía BOD 22-01. Las acciones recomendadas son las siguientes:
- Actualizar el kernel de Linux a la versión parcheada proporcionada por el proveedor de la distribución utilizada. Consultar los canales de actualización oficiales de cada distribución (Red Hat Bugzilla, Ubuntu Security Notices, Debian Security Advisories, etc.).
- Deshabilitar cgroups v1 si no es estrictamente necesario para la operación del sistema. En kernels modernos, migrar a cgroups v2 (que no presenta este vector) reduce la superficie de ataque.
- Aplicar políticas de seguridad de contenedores: Evitar el uso del flag
--privilegeden contenedores. Utilizar perfiles de seccomp, AppArmor o SELinux para limitar las capacidades de los contenedores. - Implementar sistemas de detección de intrusiones (IDS/HIDS) con reglas específicas para detectar escrituras no autorizadas en rutas de cgroups.
- Monitorizar logs del kernel (mediante
auditd) para detectar intentos de modificación del archivorelease_agentdesde procesos sin los privilegios esperados. - Aplicar el principio de mínimo privilegio: Reducir al mínimo los usuarios y procesos con acceso a sistemas de archivos especiales del kernel.
- Si las mitigaciones no están disponibles o no pueden aplicarse de forma inmediata, la CISA recomienda discontinuar el uso del producto hasta que se disponga de una corrección.