
Linux LPE mediante snap-confine + systemd-tmpfiles, explicado en profundidad
Aviso legal: Este repositorio es solo con fines educativos. Todo el contenido se basa en el aviso de seguridad original publicado por Qualys el 17 de marzo de 2026. La vulnerabilidad ha sido parcheada: asegúrese siempre de que sus sistemas estén actualizados. No utilice este material contra sistemas que no le pertenezcan o para los que no tenga permiso explícito por escrito para probar.
CVE-2026-3888 es una vulnerabilidad de Escalada de Privilegios Local (LPE) que afecta a la instalación predeterminada de Ubuntu Desktop >= 24.04. Fue descubierta y divulgada públicamente por Qualys en marzo de 2026.
Lo que hace que esta vulnerabilidad sea particularmente interesante, como señalaron los propios investigadores de Qualys, es que no se origina en un único componente defectuoso. En cambio, surge de la interacción de dos programas individualmente seguros:
| Componente | Rol |
|---|---|
snap-confine | Binario SUID-root que construye el espacio de nombres de montaje (sandbox) para las aplicaciones snap |
systemd-tmpfiles | Demonio propiedad de root que limpia periódicamente archivos obsoletos en /tmp |
Ninguno de los dos programas está roto por sí solo. Juntos, crean una ventana explotable.
Aviso original: https://cdn2.qualys.com/advisory/2026/03/17/snap-confine-systemd-tmpfiles.txt
Crédito: Qualys Security Research Team
cve-2026-3888/
├── README.md ← Usted está aquí
├── analysis/
│ ├── 01-vulnerability.md ← Análisis profundo de la vulnerabilidad
│ ├── 02-race-condition.md ← Cómo funciona la condición de carrera TOCTOU
│ ├── 03-backpressure-technique.md ← El truco de contrapresión AF/UNIX
│ ├── 04-exploitation-steps.md ← Guía completa paso a paso
│ └── 05-mitigations.md ← Qué fue parcheado y cómo
└── src/
├── firefox_2404.c ← Helper de carrera (anotado)
└── librootshell.c ← Shellcode del cargador dinámico (anotado)
| Versión de Ubuntu | Edad de limpieza | Tiempo de espera (real) |
|---|---|---|
| 24.04 LTS | 30 días | 30 días |
| > 24.04 | 10 días | 10 días |
Corregido en: snapd 2.74.2
/tmp/.snap como root:root 0755/tmp activo con escrituras periódicas, pero dejar que /tmp/.snap quede obsoletosystemd-tmpfiles elimina el /tmp/.snap obsoleto: dado que /tmp es escribible por cualquier usuario, el atacante recrea .snap y pasa a ser su propietariosnap-confinesnap-confine monta enlazado bibliotecas propiedad del atacante como root dentro del espacio de nombresld-linux-x86-64.so.2 con shellcode: cualquier binario SUID ejecutado en este espacio de nombres ejecuta nuestro código como root/var/snap/firefox/common/ para obtener un shell con privilegios completos