Lokálne koreňové zraniteľnosti v sade nástrojov na správu balíkov Snap

Qualys identifikoval dve zraniteľnosti (CVE-2021-44731, CVE-2021-44730) v obslužnom programe snap-confine, ktorý sa dodáva s koreňovým príznakom SUID a volá sa procesom snapd na vytvorenie spustiteľného prostredia pre aplikácie dodávané v samostatných balíkoch. vo formáte snap. Zraniteľnosť umožňuje miestnemu neprivilegovanému používateľovi spustiť v systéme kód s oprávneniami root. Problémy sú vyriešené v dnešnej aktualizácii balíka snapd pre Ubuntu 21.10, 20.04 a 18.04.

Prvá zraniteľnosť (CVE-2021-44730) umožňuje útok prostredníctvom manipulácie s pevným odkazom, ale vyžaduje zakázanie ochrany pevného spojenia systému (nastavenie sysctl fs.protected_hardlinks na 0). Problém je spôsobený nesprávnym overením umiestnenia spustiteľných súborov pomocných programov snap-update-ns a snap-discard-ns spustených ako root. Cesta k týmto súborom bola vypočítaná vo funkcii sc_open_snapd_tool() na základe vlastnej cesty z /proc/self/exe, ktorá vám umožňuje vytvoriť pevný odkaz na snap-confine vo vašom adresári a umiestniť svoje vlastné verzie snap- update-ns a snap-utilities v tomto adresári discard-ns. Po spustení cez pevný odkaz spustí snap-confine s právami root súbory snap-update-ns a snap-discard-ns z aktuálneho adresára, ktoré nahradí útočník.

Druhá chyba zabezpečenia je spôsobená rasou a možno ju zneužiť v predvolenej konfigurácii Ubuntu Desktop. Aby exploit úspešne fungoval na serveri Ubuntu, musíte pri inštalácii vybrať jeden z balíkov zo sekcie „Featured Server Snaps“. Súčasné podmienky sú zrejmé vo ​​funkcii setup_private_mount() volanej počas prípravy priestoru názvov bodu pripojenia pre balík snap. Táto funkcia vytvorí dočasný adresár „/tmp/snap.$SNAP_NAME/tmp“ alebo použije existujúci adresár na naviazanie a pripojenie adresárov pre balík snap do neho.

Keďže názov dočasného adresára je predvídateľný, útočník môže nahradiť jeho obsah symbolickým odkazom po kontrole vlastníka, ale pred volaním systémového volania mount. Môžete napríklad vytvoriť symbolický odkaz "/tmp/snap.lxd/tmp" v adresári /tmp/snap.lxd smerujúci na ľubovoľný adresár a volanie funkcie mount() bude nasledovať po symbolickom odkaze a pripojí adresár do snap menný priestor. Podobným spôsobom môžete pripojiť svoj obsah do /var/lib a nahradením /var/lib/snapd/mount/snap.snap-store.user-fstab usporiadať pripojenie svojho adresára /etc v mennom priestore balík snap na organizovanie načítania vašej knižnice s právami root nahradením /etc/ld.so.preload.

Je potrebné poznamenať, že vytvorenie exploitu sa ukázalo byť netriviálnou úlohou, pretože obslužný program snap-confine je napísaný v Go pomocou techník bezpečného programovania, má ochranu založenú na profiloch AppArmor, filtruje systémové volania založené na mechanizme seccomp a používa priestor názvov pripojenia pre izoláciu. Výskumníci však dokázali pripraviť pracovný exploit na získanie koreňových práv v systéme. Exploitačný kód bude zverejnený o niekoľko týždňov po tom, čo si používatelia nainštalujú poskytnuté aktualizácie.

Zdroj: opennet.ru

Pridať komentár