MagnoSec
Terminal de Ubuntu Linux con líneas de comando representando la vulnerabilidad de escalada de privilegios local a root mediante snap-confine

MagnoSec Blog

Fallo en Snap-Confine Permite a Cualquier Usuario Local Obtener Root en Ubuntu: Parchea tu Escritorio Linux

Por Equipo MagnoSec6 min de lectura

Snap-confine bajo el microscopio: la vulnerabilidad que rompe el confinamiento de Snap en Ubuntu

Un usuario sin privilegios sentado frente a un ordenador con Ubuntu puede convertirse en root en cuestión de segundos gracias a una vulnerabilidad en snap-confine, el componente del sistema de paquetes Snap que se encarga de confinar las aplicaciones para que no accedan a recursos del sistema. Irónicamente, el software diseñado para aislar aplicaciones del resto del sistema es el que proporciona la llave para comprometerlo completamente. El fallo permite a cualquier usuario local —sin necesidad de contraseña de administrador, sin necesidad de pertenecer al grupo sudo— ejecutar código con privilegios de root. Esto significa que un atacante que haya conseguido acceso a una sesión de usuario estándar en un escritorio Ubuntu —mediante malware, ingeniería social, o simplemente aprovechando un momento de despiste en una oficina— puede escalar a administrador del sistema en segundos. La vulnerabilidad afecta a todas las versiones recientes de Ubuntu Desktop (20.04, 22.04, 24.04, 26.04) que utilizan Snap como sistema de paquetería, lo que incluye la práctica totalidad de las instalaciones de escritorio de Ubuntu.

Snap, Snapd y Snap-confine: el ecosistema de paquetes de Canonical y su superficie de ataque

Snap es el sistema de paquetería desarrollado por Canonical (la empresa detrás de Ubuntu) como alternativa a los paquetes .deb tradicionales. Un paquete Snap incluye la aplicación y todas sus dependencias en un contenedor aislado que se ejecuta en un entorno restringido (sandbox). Snap-confine es el binario SUID (Set User ID) que se encarga de configurar ese entorno restringido antes de ejecutar la aplicación: crea namespaces de Linux, monta sistemas de archivos virtuales, configura el perfil de AppArmor y asigna los recursos. Para hacer todo esto, snap-confine necesita privilegios de root, y por eso tiene el bit SUID activado —cualquier usuario puede ejecutar snap-confine, y lo hará con privilegios de root—. La vulnerabilidad está en cómo snap-confine valida los parámetros que recibe antes de realizar operaciones privilegiadas. Un atacante puede invocar snap-confine con parámetros especialmente manipulados que explotan una condición de carrera (race condition) en la creación de namespaces, permitiendo que el código del atacante se ejecute en un contexto que debería estar restringido pero que, debido a la manipulación, tiene acceso completo al sistema de archivos raíz. El confinamiento se invierte: en lugar de encerrar a la aplicación, encierra al sistema de archivos real y le da al atacante la llave.

Así se escala a root: de usuario sin privilegios a administrador del sistema explotando snap-confine

La explotación es un clásico de la escalada de privilegios local en Linux: se abusa de un binario SUID mal implementado. El atacante no necesita conocimientos avanzados de kernel ni exploits sofisticados. Solo necesita acceso a una shell de usuario en un sistema Ubuntu con Snap instalado. Ejecuta snap-confine con un snap name manipulado que desencadena la condición de carrera. Durante la creación del namespace de montaje, el atacante intercambia un directorio controlado por él con un directorio del sistema mediante un symlink rápido (symlink swapping attack). Snap-confine, ejecutando como root, monta el directorio controlado por el atacante como si fuera parte del sistema de archivos de la aplicación Snap. Pero como el atacante ha manipulado la operación, lo que realmente se monta es un sistema de archivos que le da al atacante acceso de escritura a directorios del sistema que deberían ser de solo lectura para un usuario normal. A partir de ahí, el atacante puede copiar un binario SUID propio (por ejemplo, una copia de /bin/bash con SUID root) al sistema, o modificar /etc/passwd para añadir un nuevo usuario con UID 0, o simplemente ejecutar un comando como root a través del mecanismo de mounts manipulados. En cuestión de segundos, el usuario 'john' que solo tenía permisos para editar sus documentos es root y puede leer, modificar o destruir cualquier archivo del sistema, instalar malware, crear puertas traseras o robar todas las credenciales y datos del equipo.

El impacto en estaciones de trabajo Linux: desarrolladores, administradores y usuarios de Ubuntu en riesgo

El impacto se extiende a todas las estaciones de trabajo Ubuntu en entornos corporativos, educativos y de desarrollo. Ubuntu es la distribución Linux más utilizada en escritorios, especialmente entre desarrolladores, administradores de sistemas e ingenieros de seguridad. Son precisamente estos perfiles los que manejan información sensible: credenciales de producción, claves SSH de servidores, tokens de API, acceso a repositorios de código, configuraciones de infraestructura. Una estación de trabajo Linux es la puerta de entrada a la infraestructura de producción. Si un atacante compromete la estación del administrador de sistemas, compromete todos los sistemas que ese administrador gestiona. La cadena es: phishing o malware para obtener acceso como usuario estándar (fácil), exploit de snap-confine para escalar a root (segundos), robo de claves SSH y credenciales del gestor de contraseñas y archivos de configuración (minutos), acceso a la infraestructura de producción (horas). Lo que empezó como un email de phishing contra un desarrollador termina con el atacante teniendo acceso root a todos los servidores de producción que ese desarrollador administra. La seguridad de las estaciones de trabajo no es un lujo: es la primera línea de defensa de la infraestructura.

Cómo MagnoSec audita entornos Linux y detecta vectores de escalada de privilegios local

En MagnoSec, las auditorías de infraestructura incluyen la evaluación de la seguridad de las estaciones de trabajo de los administradores y perfiles con acceso privilegiado. Revisamos los binarios SUID del sistema en busca de configuraciones inseguras o vulnerabilidades conocidas sin parchear. Verificamos que el sistema está actualizado con los últimos parches de seguridad, especialmente en componentes críticos como snapd en sistemas Ubuntu. Evaluamos la configuración de AppArmor y SELinux para asegurar que los perfiles de confinamiento están activos y correctamente configurados. Y analizamos el modelo de amenaza específico de las estaciones de administración: ¿están aisladas del resto de la red de oficinas? ¿Tienen MFA para el acceso físico y remoto? ¿Las claves SSH y credenciales están protegidas con frase de paso y almacenadas en un gestor seguro? La seguridad de un servidor de producción empieza por la seguridad del teclado desde el que se administra. Un binario SUID vulnerable en la estación del administrador es un vector de ataque directo contra toda la infraestructura.

Mitigación: actualización de snapd, revisión de binarios SUID y hardening de estaciones Linux

La mitigación es directa pero urgente. Paso 1: actualizar el paquete snapd en todos los sistemas Ubuntu Desktop inmediatamente. Canonical ha publicado una actualización de seguridad que corrige la condición de carrera en snap-confine. El comando 'sudo apt update && sudo apt upgrade snapd' aplica el parche. Paso 2: verificar que no hay otros binarios SUID sospechosos o no autorizados en el sistema. El comando 'find / -perm -4000 -type f 2>/dev/null' lista todos los binarios SUID del sistema. Si aparece algún binario en ubicaciones no estándar (como /tmp, /home, /var/tmp), es un indicador de compromiso. Paso 3: en entornos corporativos, desplegar la actualización mediante la herramienta de gestión de endpoints (Landscape, Ansible, Puppet) para asegurar que todos los sistemas se actualizan simultáneamente. No basta con avisar a los usuarios: hay que forzar la actualización. Paso 4: implementar una política de hardening de estaciones Linux que incluya la revisión periódica de binarios SUID, la restricción de paquetes instalados a los estrictamente necesarios, y la configuración de actualizaciones de seguridad automáticas para parches críticos. Una vulnerabilidad local de escalada de privilegios no debería ser el vector que permita a un atacante pasar de una sesión de usuario a root. El hecho de que exista es un fallo del sistema operativo. Que esté sin parchear un mes después de publicado el aviso es un fallo de la organización.

Temas tratados

Ubuntu · snap-confine · root · escalada privilegios · Linux · Snap · Canonical · LPE

¿Quieres saber si tu empresa tiene estas vulnerabilidades?

Auditamos la seguridad de empresas de toda España con alcance cerrado por escrito, informe técnico y ejecutivo, y retest de las correcciones. Presupuesto en 24 horas y primera consultoría sin coste. Si no sabes por dónde empezar, haz el test de seguridad de 15 preguntas.

¿Quieres más información?