Los contenedores de Linux caben en 500 líneas de código
Linux containers in 500 lines of code
Lizzie disecciona cómo construir contenedores Linux desde cero en apenas 500 líneas de C, usando namespaces y capacidades del kernel. El artículo explora los riesgos de seguridad de los user namespaces, que permiten a un usuario sin privilegios recuperar capacidades como CAP_NET_ADMIN y atacar el subsistema de red. Incluye ejemplos de código, parches de Ubuntu, Debian y grsecurity, y muestra cómo aislar procesos con clone, uid_map y pid namespaces.
Si un usuario root (real) ha perdido la capacidad SYS_CAP_ADMIN, pero luego crea un user namespace, esta capacidad se restaura para el usuario root (falso). Es decir, antes de crear el namespace, 'mount' sería denegado, pero tras la creación del user namespace, la llamada al sistema 'mount' funcionaría mágicamente de nuevo, aunque de forma limitada.