Vulnerabilidad en Linux CVE-2022-0185

01.02.2022

La nueva vulnerabilidad CVE-2022-0185 en el kernel Linux permite tomar el control del nodo siempre que el contenedor tenga habilitado el privilegio CAP_SYS_ADMIN.

Los mantenedores del kernel Linux han descubierto una nueva vulnerabilidad en el núcleo, la cual ha sido identificada como CVE-2022-0185, la cual podría aprovecharse en entornos como Kubernetes para escapar de los contenedores y tomar el control del nodo. Para la explotación del fallo se requiere que el contenedor tenga habilitado el permiso CAP_SYS_ADMIN, el cual permite realizar acciones como montar unidades o establecer cuotas en el contenedor.

La vulnerabilidad consiste en un desbordamiento de enteros (del inglés 'integer underflow') en el componente del contexto del sistema de archivos, por el cual puede reducirse el valor por debajo de cero y en vez de tomar un valor negativo, alcanzar el valor máximo del entero. El fallo puede aprovecharse para escribir fuera de la memoria asignada y así cambiar otros valores del espacio.

En un principio otras tecnologías como Docker no son vulnerables a este fallo gracias a que seccomp está habilitado de serie. Esta característica del kernel se utiliza para restringir las acciones habilitadas en el contenedor, impidiendo la explotación de la vulnerabilidad. Puede comprobarse esta restricción intentando ejecutar 'unshare' en la instancia, pudiendo ver como error que la operación no está permitida. Los operadores de Kubernetes en teoría también podrían habilitar seccomp por defecto, aunque esta es todavía una característica en pruebas.

La vulnerabilidad ya ha sido corregida en la versión 5.16.2 de Linux, encontrándose ya disponible en la mayoría de distribuciones como Redhat, Debian o Ubuntu. El fallo sólo se encuentra presente a partir de la versión 5.1 del kernel, por lo que versiones anteriores no necesitan corregir la incidencia. Otra posibilidad es desactivar los «user namespaces» sin privilegios, para lo cual puede utilizarse: 'sysctl -w kernel.unprivileged_userns_clone = 0'.

De momento no se tiene constancia de su explotación por atacantes, aunque ya hay disponibles algunas pruebas de concepto (del inglés 'Proof of Concept' o PoC) y ya hay otros usuarios que la están probando. El mismo usuario de Twitter ha publicado un repositorio donde promete subir próximamente sus resultados.

Se recomienda actualizar lo antes posible en caso de tener contenedores que hagan uso del permiso 'CAP_SYS_ADMIN'. También recomendamos de forma general, no otorgar permisos adicionales a los contenedores salvo que se requiera de verdad su uso.

Más información:

CVE-2022-0185:
https://access.redhat.com/security/cve/CVE-2022-0185

¿Qué implica la nueva explotación del kernel para los usuarios de Kubernetes y cómo detectarla?

https://www.armosec.io/blog/cve-2022-0185-kubernetes-users/