Helyi root-sérülékenységek a Snap csomagkezelő eszközeiben

A Qualys cég két sebezhetőséget (CVE-2021-44731, CVE-2021-44730) tárt fel a snap-confine segédprogramban, amely a root SUID zászlóval kerül kiadásra, és a snapd folyamat hívja meg az alkalmazások futtatási környezetének kialakításához, amelyek önálló csomagok formájában érkeznek a snap formátumban. A sebezhetőségek lehetővé teszik, hogy egy helyi, nem privilégizált felhasználó root jogosultságokkal kódot hajtson végre a rendszerben. A problémákat a mai snapd csomagok frissítésével orvosolták az Ubuntu 21.10, 20.04 és 18.04 verziók esetében.

Az első sebezhetőség (CVE-2021-44730) lehetővé teszi a hivatkozott fájlok manipuláción keresztüli támadást, de szükséges a rendszer hivatkozott fájlok védelmének letiltása (a sysctl fs.protected_hardlinks 0-ra állítása). A probléma a snap-update-ns és snap-discard-ns segédprogramok helyének helytelen ellenőrzéséből ered, amelyeket root jogosultságokkal indítanak el. Az e fájlokhoz való útvonalat a sc_open_snapd_tool() függvényben számolták ki a saját elérési út alapján a /proc/self/exe -ből, lehetővé téve ezzel, hogy a felhasználó egy hivatkozott fájlt hozzon létre a snap-confine-ra a saját könyvtárában, és elhelyezze a saját snap-update-ns és snap-discard-ns változatait ebben a könyvtárban. Miután a hivatkozásról a snap-confine-t root jogosultságokkal indítják, a támadó által az aktuális könyvtárban elhelyezett snap-update-ns és snap-discard-ns fájlokat indítja el.

A második sebezhetőség egy versenyhelyzetből ered, és alapértelmezett Ubuntu Desktop konfigurációban használható ki. Az exploit sikeres működéséhez Ubuntu Server környezetben szükséges egy választás egy a „Kiemelt Server Snaps” szekcióból a telepítés során. A versenyhelyzet a setup_private_mount() függvényben nyilvánul meg, amely a snap csomagokhoz tartozó csatolási pontok névtér előkészítése során kerül meghívásra. Ez a függvény ideiglenes könyvtárat hoz létre „/tmp/snap.$SNAP_NAME/tmp” néven, vagy használja a már létezőt, hogy bind-montálja bele a snap formátumú csomagok könyvtárait.

Mivel a ideiglenes könyvtár neve előre meghatározott, a támadó a tulajdonjog ellenőrzése után, de a mount rendszerhívás végrehajtása előtt szimbolikus hivatkozást hozhat létre a tartalmában. Például a /tmp/snap.lxd könyvtárban létrehozhat egy " /tmp/snap.lxd/tmp" szimbolikus hivatkozást, amely egy tetszőleges könyvtárra mutat, és a mount() hívás a szimbolikus hivatkozáson át a snap névtérben lévő könyvtárat fogja csatolni. Hasonló módon csatolhatjuk a saját tartalmunkat a /var/lib könyvtárba, és a /var/lib/snapd/mount/snap.snap-store.user-fstab helyettesítésével megszervezhetjük a saját /etc könyvtárunk csatolását a snap csomag névtérben a root jogosultságokkal rendelkező könyvtárunk betöltésére a /etc/ld.so.preload helyettesítésével.

Megjegyzendő, hogy egy exploit létrehozása nem volt könnyű feladat, mivel a snap-confine eszköze Go nyelven készült és biztonságos programozási technikákat alkalmaz, AppArmor alapú védelmet tartalmaz, szűri a rendszerhívásokat seccomp mechanizmus segítségével, és névtérben végzi a csatolást. Ennek ellenére a kutatóknak sikerült egy működő exploitot készíteniük az root jogosultságok megszerzésére a rendszerben. Az exploit kódját néhány héten belül közzéteszik, miután a felhasználók telepítették a megadott frissítéseket.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster