Helyi gyökér biztonsági rések a Snap csomagkezelő eszközkészletben

A Qualys két sebezhetőséget azonosított (CVE-2021-44731, CVE-2021-44730) a snap-confine segédprogramban, amelyet a SUID gyökérjelzővel látnak el, és amelyet a snapd folyamat hív meg, hogy végrehajtható környezetet hozzon létre az önálló csomagokban szállított alkalmazások számára. snap formátumban. A sérülékenységek lehetővé teszik a helyi, jogosulatlan felhasználók számára, hogy root jogosultságokkal kódot hajtsanak végre a rendszeren. A problémákat az Ubuntu 21.10, 20.04 és 18.04 mai snapd csomagfrissítése megoldja.

Az első biztonsági rés (CVE-2021-44730) lehetővé teszi a merevhivatkozás-manipuláción keresztül történő támadást, de ehhez le kell tiltani a rendszer merevkapcsolat-védelmét (a sysctl fs.protected_hardlinks 0-ra állítása). A problémát a rootként futó snap-update-ns és snap-discard-ns segédprogramok végrehajtható fájljainak helytelen ellenőrzése okozza. Ezeknek a fájloknak az elérési útját az sc_open_snapd_tool() függvény számította ki a /proc/self/exe fájl saját elérési útja alapján, amely lehetővé teszi, hogy hozzon létre egy kemény hivatkozást a snap-confine-hoz a könyvtárban, és helyezze el a saját verzióit a snap- update-ns és snap- segédprogramok ebben a könyvtárban dobja-ns. A merev hivatkozáson keresztüli futtatás után a snap-confine root jogokkal elindítja a snap-update-ns és snap-discard-ns fájlokat az aktuális könyvtárból, amelyeket a támadó helyettesít.

A második sebezhetőséget versenyhelyzet okozza, és az alapértelmezett Ubuntu Desktop konfigurációban használható ki. Ahhoz, hogy az exploit sikeresen működjön az Ubuntu kiszolgálón, telepítéskor ki kell választania az egyik csomagot a „Featured Server Snaps” szakaszból. A versenyfeltétel nyilvánvaló a setup_private_mount() függvényben, amelyet a beillesztési pont névterének előkészítése során hívunk meg a snap csomaghoz. Ez a függvény létrehoz egy ideiglenes „/tmp/snap.$SNAP_NAME/tmp” könyvtárat, vagy egy meglévő könyvtárat használ a beillesztési csomagok beillesztéséhez.

Mivel az ideiglenes címtár neve megjósolható, a támadó a tulajdonos ellenőrzése után, de a mount rendszerhívás meghívása előtt lecserélheti annak tartalmát egy szimbolikus hivatkozásra. Például létrehozhat egy "/tmp/snap.lxd/tmp" szimbolikus hivatkozást a /tmp/snap.lxd könyvtárban, amely egy tetszőleges könyvtárra mutat, és a mount() hívás követi a szimbolikus hivatkozást, és felcsatolja a könyvtárat a snap névtér. Hasonló módon felcsatolhatja a /var/lib fájl tartalmát, és a /var/lib/snapd/mount/snap.snap-store.user-fstab lecserélésével megszervezheti a /etc könyvtár beillesztését a névterébe. a snap csomag a könyvtár betöltésének megszervezéséhez root jogokkal az /etc/ld.so.preload lecserélésével.

Megjegyzendő, hogy egy exploit létrehozása nem triviális feladatnak bizonyult, mivel a snap-confine segédprogram a Go nyelvben íródott biztonságos programozási technikákat használva, AppArmor profilokon alapuló védelemmel rendelkezik, a seccomp mechanizmus alapján szűri a rendszerhívásokat, és a mount névteret az elkülönítéshez. A kutatók azonban képesek voltak egy működő exploitot előkészíteni a rendszer gyökérjogainak megszerzésére. A kihasználó kódot néhány héten belül közzéteszik, miután a felhasználók telepítik a mellékelt frissítéseket.

Forrás: opennet.ru

Hozzászólás