En Ubuntu 23.10 «Mantic Minotaur» el acceso al espacio de nombres de usuario esta restringido
Tras el lanzamiento de la nueva versión de Ubuntu 23.10 «Mantic Minotaur» ya se han dado a conocer todos los detalles de esta nueva versión de la popular distribucion de Linux (puedes consultar la publicación al respecto en este enlace.). De la gran cantidad de cambios que acompañan al lanzamiento hay varios en especifico que llegan a cambiar ciertos aspectos del sistema.
La razón de mencionar esto, es que uno de esos cambios es la nueva restricción que se ha impuesto en los espacios de nombres de los usuarios.
El nuevo cambio como tal implementado por Canonical en Ubuntu 23.10 tiene la finalidad de restringir el acceso de los usuarios sin privilegios a los espacios de nombres, haciendo que los sistemas que dependen del aislamiento de contenedores sean más seguros contra vulnerabilidades que requieren la manipulación del espacio de nombres de los usuarios para ser explotados.
Los espacios de nombres de usuarios sin privilegios son una característica del kernel que se puede utilizar para reemplazar muchos de los usos de los programas setuid y setguid y permiten que las aplicaciones creen entornos limitados de pruebas más seguros. Los espacios de nombres en el kernel de Linux permiten asignar diferentes representaciones de recursos a diferentes procesos; por ejemplo, un proceso se puede colocar en un entorno con sus propios puntos de montaje, UTS, IPC, PID y pila de red, que no se superponen con el entorno de otros procesos.
Los espacios de nombres para usuarios sin privilegios permiten crear espacios de nombres no solo para el usuario root, sino también para usuarios normales sin privilegios (por ejemplo, utilizados para navegadores de zona protegida). Entre otras cosas, puede crear espacios de nombres de usuario y espacios de nombres de red, que permiten que un proceso en un entorno aislado independiente obtenga privilegios de root o acceda a funciones avanzadas de la pila de red, pero permanezca sin privilegios fuera del contenedor.
En teoría, las operaciones privilegiadas dentro de un espacio de nombres están aisladas del sistema principal, pero en la práctica, regularmente surgen vulnerabilidades en los subsistemas del kernel que son inaccesibles para un usuario sin privilegios en el entorno principal, pero que pueden explotarse mediante manipulaciones desde espacios de nombres.
El problema con este modelo, es que exponen interfaces del kernel que normalmente están restringidas a procesos con capacidades privilegiadas (root) para que las utilicen usuarios sin privilegios. Es por ello que esto se vuelve a la vez un proceso que introduce riesgos de seguridad adicionales, al exponer más interfaces del kernel de las necesarias, ademas de que ahora se utilizan ampliamente como un paso en varias cadenas de explotación de escalada de privilegios.
En el caso de Ubuntu, esto ahora ha cambiado, ya que el acceso a los espacios de nombres de usuario ahora solo se otorga a los programas para los cuales se ha agregado un perfil especial de AppArmor que se puede usar como ejemplo para abrir el acceso al espacio de nombres de usuario para otros programas. Se menciona que el cambio mejorará la seguridad de los sistemas que utilizan el aislamiento de contenedores de las vulnerabilidades que requieren acceso al espacio de nombres del usuario para explotarlas.
Si bien deshabilitar los espacios de nombres de usuarios sin privilegios puede detener un exploit, también puede dañar las aplicaciones que los utilizan. Generalmente, un exploit se dirige a una aplicación específica y, siempre que se puedan deshabilitar los espacios de nombres de usuarios sin privilegios para esas aplicaciones, no es necesario deshabilitarlos para todo el sistema.
Se menciona que ninguna versión anterior a Ubuntu 23.10 «Mantic Minotaur» se verá afectada por este cambio, incluso cuando sé utiliza el kernel 6.5, ya que la función no está habilitada directamente en el kernel sino dentro del paquete apparmor específico de Ubuntu 23.10 «Mantic Minotaur».
Finalmente, se menciona que para aquellos que desean deshabilitar este cambio, pueden hacerlo tecleando lo siguiente en una terminal:
sudo sysctl -w kernel.apparmor_restrict_unprivileged_unconfined=0 sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.