Erica Windisch advierte que los espacios de nombres de usuario de Linux podrían no ser lo suficientemente seguros. Si a un usuario root real se le ha eliminado la capacidad SYS_CAP_ADMIN pero luego crea un espacio de nombres de usuario, la capacidad se restaura para el usuario root falso. Antes de crear el espacio de nombres, 'mount' sería denegado, pero después de la creación, la llamada al sistema 'mount' funcionaría nuevamente de manera limitada. Esto es lo suficientemente significativo como para que, dado un usuario root real y un kernel con espacios de nombres de usuario, las capacidades de Linux puedan ser completamente subvertidas.
La página man de user_namespaces confirma que el proceso hijo creado por clone(2) con CLONE_NEWUSER comienza con un conjunto completo de capacidades en el nuevo espacio de nombres. Los espacios de nombres de usuario permiten intersecciones "interesantes" de modelos de seguridad, otorgando capacidades root completas al nuevo espacio de nombres. Esto puede permitir que CLONE_NEWUSER use efectivamente CAP_NET_ADMIN sobre otros espacios de nombres de red, especialmente si los contenedores no están en uso. Los procesos con CAP_NET_ADMIN tienen una gran superficie de ataque y han resultado en varias vulnerabilidades del kernel, lo que podría permitir que un espacio de nombres de usuario no privilegiado apunte a la superficie de ataque del subsistema de red del kernel.
Las demostraciones muestran que en un host con espacios de nombres de usuario compilados, un usuario puede crear un puente usando ioctl con SIOCBRADDBR, aunque falla al establecer capacidades de archivo con cap_set_file. Ubuntu habilita CONFIG_USER_NS pero lo parchea para que el uso no privilegiado pueda deshabilitarse con el sysctl unprivileged_userns_clone. La configuración del kernel tiene como valor predeterminado 'n' para los espacios de nombres de usuario, recomendando MEMCG para limitar la memoria de los usuarios no privilegiados.
Fuente: Hacker News · Resumido por HeadlinesBriefing