Elevación De Privilegios En El Kernel Linux
Un error en el componente «cgroups» del kernel Linux exponía operaciones privilegiadas a usuarios sin los permisos suficientes, lo que permitiría a un atacante elevar privilegios en un sistema vulnerable.
Un error en la función ‘cgroup_release_agent_write‘ localizada en el componente ‘kernel/cgroup/cgroup-v1.c‘, permitiría utilizar la funcionalidad ‘release_agent‘ del componente ‘cgroups v1‘ para elevar privilegios y escapar del entorno aislado. Esta vulnerabilidad ha recibido el código CVE-2022-0492 y una puntuación de 7.0.
Se ha publicado el parche que requiere al usuario los permisos necesarios para ejecutar la función privilegiada ‘release_agents‘:
!capable(CAP_SYS_ADMIN)
Como decíamos, un atacante que pueda escribir el fichero de ‘release_agent‘ podría escalar privilegios en el sistema. Sin embargo, este fichero sólo puede ser escrito por el usuario ‘root’. Parece pues un poco contradictorio una vulnerabilidad de elevación de privilegios que sólo pueda ser explotada por un usuario ‘root’. Sin embargo, que un usuario sea ‘root’ no significa que tenga el control total de la máquina. Es el caso de entornos aislados como contenedores docker.
En ese sentido, sólo los contenedores con un perfil más permisivo podrían ser explotables. Por defecto, los puntos de montaje de ‘cgroup’ son de ‘solo lectura’ y por lo tanto su fichero ‘release_agent’ no podría ser escrito.
Además los módulos de seguridad AppArmor y SELinux están activos por defecto, e impiden el montaje de sistemas de archivos. Para explotar esta vulnerabilidad habría que crear un punto de montaje para ‘cgroupfs’ y conseguir escribir en él. Cosa que algunos investigadores de seguridad han conseguido abusando del espacio de nombres del usuario o del permiso ‘CAP_SYS_ADMIN’.
Si sospechas que tus sistemas pueden ser vulnerables se recomienda actualizar cuanto antes los contenedores inseguros o aplicar alguna de las contramedidas siguientes:
- Habilitar los módulos de seguridad AppArmor y SELinux.
- Habilitar Seccomp
- Desactivar los espacios de nombres de usuario no privilegiados con
sudo sysctl -w kernel.unprivileged_userns_clone=0
- Evitar que los procesos escriban en ‘release_agent’.
Más información:
cgroup-v1: Require capabilities to set release_agent
New Linux Vulnerability CVE-2022-0492 Affecting Cgroups: Can Containers Escape?
Libros recomendados
Via: unaaldia.hispasec.com