Lokalne korijenske ranjivosti u Snap paketu alata za upravljanje

Компания Qualys выявила две уязвимости (CVE-2021-44731, CVE-2021-44730) в утилите snap-confine, поставляемой с флагом SUID root и вызываемой процессом snapd для формирования исполняемого окружения для приложений, поставляемых в самодостаточных пакетах в формате snap. Уязвимости позволяют локальному непривилегированному пользователю добиться выполнения кода с правами root в системе. Проблемы устранены в сегодняшнем обновлении пакетов snapd для Ubuntu 21.10, 20.04 i 18.04.

Prva ranjivost (CVE-2021-44730) dozvoljava napad putem manipulacije tvrdom vezom, ali zahtijeva onemogućavanje sistemske zaštite tvrdih veza (postavljanje sysctl fs.protected_hardlinks na 0). Problem je uzrokovan neispravnom provjerom lokacije izvršnih datoteka pomoćnih programa snap-update-ns i snap-discard-ns koji se pokreću kao root. Put do ovih datoteka izračunat je u funkciji sc_open_snapd_tool() na osnovu vlastite putanje iz /proc/self/exe, što vam omogućava da kreirate čvrstu vezu za ograničenje snap-a u vašem direktoriju i postavite vlastite verzije snap-a. update-ns i snap-utilities u ovom direktoriju discard-ns. Nakon pokretanja preko tvrdog linka, snap-confine sa root pravima će pokrenuti datoteke snap-update-ns i snap-discard-ns iz trenutnog direktorija, koje je zamenio napadač.

Вторая уязвимость вызвана состоянием гонки и может быть эксплуатирована в конфигурации Ubuntu Desktop по умолчанию. Для успешной работы эксплоита в Ubuntu Server требуется выбор при установке одного из пакетов из секции «Featured Server Snaps». Состояние гонки проявляется в функции setup_private_mount(), вызываемой во время подготовки пространства имён точек монтирования для пакета snap. Данная функция создаёт временный каталог «/tmp/snap.$SNAP_NAME/tmp» или использует уже существующий для bind-монтировния в него каталогов для пакета в формате snap.

Budući da je ime privremenog direktorija predvidljivo, napadač može zamijeniti njegov sadržaj simboličkom vezom nakon provjere vlasnika, ali prije pozivanja sistemskog poziva za montiranje. Na primjer, možete kreirati simboličku vezu "/tmp/snap.lxd/tmp" u direktoriju /tmp/snap.lxd koji ukazuje na proizvoljni direktorij, a poziv mount() pratit će simboličku vezu i montirati direktorij u snap namespace. Na sličan način možete montirati svoj sadržaj u /var/lib i, zamjenom /var/lib/snapd/mount/snap.snap-store.user-fstab, organizirati montiranje vašeg /etc direktorija u imenskom prostoru snap paket za organiziranje učitavanja vaše biblioteke s root pravima zamjenom /etc/ld.so.preload.

Napominje se da se ispostavilo da je kreiranje exploit-a netrivijalan zadatak, budući da je uslužni program snap-confine napisan u Go koristeći tehnike sigurnog programiranja, ima zaštitu zasnovanu na AppArmor profilima, filtrira sistemske pozive na osnovu mehanizma seccomp i koristi prostor imena mount za izolaciju. Međutim, istraživači su bili u mogućnosti da pripreme radni eksploat za dobijanje root prava na sistemu. Exploit kod će biti objavljen za nekoliko sedmica nakon što korisnici instaliraju dostavljena ažuriranja.

izvor: opennet.ru

Kupite pouzdan hosting za sajtove sa DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan web hosting sa DDoS zaštitom, VPS VDS servere | ProHoster