1. Descripción técnica del ataque
En Linux, la pertenencia de un usuario a ciertos grupos del sistema otorga capacidades que pueden derivar en escalada de privilegios, incluso sin necesidad de sudo o binarios SUID. Si un usuario sin privilegios pertenece (por configuración indebida) a uno de estos grupos, puede abusar de los permisos asociados para leer datos sensibles o convertirse en root. Los más relevantes:
disk— acceso de lectura/escritura a los dispositivos de bloque (/dev/sda*). Con herramientas comodebugfsse puede leer cualquier archivo del sistema (incluido/root/.ssh/id_rsao/etc/shadow) saltándose los permisos del sistema de archivos.adm— lectura de los logs del sistema (/var/log). Permite encontrar credenciales filtradas enauth.log, logs de aplicaciones, etc.shadow— lectura de/etc/shadow(hashes de contraseñas) para crackearlos (ver Writable Critical Files Privesc).docker— ejecutar contenedores; montando/del host en un contenedor se obtiene root trivialmente.lxd/lxc— crear contenedores privilegiados que montan el host → root.video,sudo,wheel,staff— diversos abusos según el sistema.
2. Impacto de la vulnerabilidad
- Escalada de privilegios a root (directa con
docker/lxd/disk) o lectura de material sensible que conduce a root (adm,shadow). - Lectura arbitraria de archivos saltándose los permisos (con
disk).
3. Historia y evolución
- Son capacidades de diseño de Unix/Linux mal asignadas; su abuso está plenamente catalogado (HackTricks, GTFOBins-style).
- Los grupos
dockerylxdse han vuelto vectores muy habituales con la popularización de los contenedores.
4. Factores que la hacen posible
- Un usuario sin privilegios incluido en un grupo privilegiado sin necesitarlo realmente.
- Las herramientas necesarias disponibles (
debugfs,docker,lxc, etc.).
5. Detección
id # ¿pertenezco a disk, adm, docker, lxd, shadow...?
groupsHerramientas como LinPEAS destacan automáticamente la pertenencia a grupos peligrosos.
6. Mitigación
- Aplicar el principio de mínimo privilegio: no añadir usuarios a grupos del sistema salvo necesidad real.
- Revisar periódicamente las pertenencias a
disk,adm,docker,lxd,shadow. - Restringir el acceso a las herramientas que habilitan el abuso.
7. Ejemplo de explotación real
Grupo disk — leer la clave SSH de root con debugfs:
ben@ready:/var/www/html$ id
uid=1000(ben) gid=1000(ben) groups=1000(ben),6(disk)
ben@ready:/var/www/html$ df -h
/dev/sda1 6.9G 1.7G 4.8G 26% /
ben@ready:/var/www/html$ debugfs /dev/sda1
cat /root/.ssh/id_rsa
-----BEGIN RSA PRIVATE KEY-----
...Grupo adm — buscar credenciales en los logs:
charlie@hit:/$ id
uid=1000(charlie) gid=1000(charlie) grupos=1000(charlie),4(adm)
charlie@hit:/var/log$ cat auth.log | grep pass
... Failed password for invalid user r00tP4zzw0rd from ...Grupo docker — montar el host y obtener root:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh8. Clasificación
- Tipo: Privilege Escalation / Security Misconfiguration
- CWE:
- CWE-250 – Execution with Unnecessary Privileges
- CWE-266 – Incorrect Privilege Assignment
9. Resumen
La pertenencia a grupos privilegiados (disk, adm, docker, lxd, shadow…) permite escalar privilegios sin sudo ni SUID: leer archivos arbitrarios con debugfs (disk), credenciales en logs (adm) o montar el host en un contenedor (docker/lxd). La defensa es el mínimo privilegio en la asignación de grupos. Relacionado con Writable Critical Files Privesc y Linux Capabilities Privesc.