Snap paketlarni boshqarish vositalari to'plamidagi mahalliy ildiz zaifliklari

Qualys SUID ildiz bayrog'i bilan ta'minlangan va snapd jarayoni tomonidan mustaqil paketlarda yetkazib beriladigan ilovalar uchun bajariladigan muhit yaratish uchun chaqirilgan snap-confine yordam dasturida ikkita zaiflikni (CVE-2021-44731, CVE-2021-44730) aniqladi. snap formatida. Zaifliklar mahalliy imtiyozsiz foydalanuvchiga tizimda ildiz huquqlariga ega kodni bajarishga imkon beradi. Muammolar Ubuntu 21.10, 20.04 va 18.04 uchun bugungi snapd paketi yangilanishida hal qilingan.

Birinchi zaiflik (CVE-2021-44730) qattiq havola manipulyatsiyasi orqali hujumga ruxsat beradi, lekin tizimning qattiq havola himoyasini o'chirib qo'yishni talab qiladi (sysctl fs.protected_hardlinks ni 0 ga o'rnatish). Muammo ildiz sifatida ishlaydigan snap-update-ns va snap-discard-ns yordamchi dasturlarining bajariladigan fayllari joylashuvini noto'g'ri tekshirish natijasida yuzaga keladi. Ushbu fayllarga yo'l sc_open_snapd_tool() funksiyasida /proc/self/exe dan o'z yo'liga asoslangan holda hisoblab chiqilgan, bu sizga katalogingizda snap-cheklash uchun qattiq havola yaratish va snap-ning o'z versiyalarini joylashtirish imkonini beradi. Ushbu katalogdagi update-ns va snap- yordam dasturlari. discard-ns. Qattiq havola orqali ishga tushirilgandan so'ng, ildiz huquqlari bilan snap-confine joriy katalogdan tajovuzkor tomonidan almashtirilgan snap-update-ns va snap-discard-ns fayllarini ishga tushiradi.

Ikkinchi zaiflik poyga holatidan kelib chiqadi va undan standart Ubuntu Desktop konfiguratsiyasida foydalanish mumkin. Ubuntu serverida ekspluatatsiya muvaffaqiyatli ishlashi uchun oʻrnatish vaqtida “Featured Server Snaps” boʻlimidagi paketlardan birini tanlashingiz kerak. Poyga holati snap paketi uchun o'rnatish nuqtasi nom maydonini tayyorlash paytida chaqirilgan setup_private_mount() funktsiyasida aniq ko'rinadi. Bu funksiya “/tmp/snap.$SNAP_NAME/tmp” vaqtinchalik katalogini yaratadi yoki unga biriktirilgan paketlar uchun kataloglarni ulash uchun mavjud katalogdan foydalanadi.

Vaqtinchalik katalog nomini oldindan aytish mumkin bo'lganligi sababli, tajovuzkor egasini tekshirgandan so'ng, lekin o'rnatish tizimi chaqiruviga qo'ng'iroq qilishdan oldin uning mazmunini ramziy havola bilan almashtirishi mumkin. Misol uchun, /tmp/snap.lxd/tmp katalogida ixtiyoriy katalogga ishora qiluvchi "/tmp/snap.lxd/tmp" simli havolasini yaratishingiz mumkin va mount() ga qo'ng'iroq simli havolaga amal qiladi va katalogni katalogga o'rnatadi. snap nom maydoni. Xuddi shunday, siz o'z tarkibingizni /var/lib-ga o'rnatishingiz mumkin va /var/lib/snapd/mount/snap.snap-store.user-fstab o'rniga, /etc katalogingizni nomlar maydoniga o'rnatishni tashkil qiling. /etc/ld.so.preload o'rniga kutubxonangizni ildiz huquqlaridan yuklashni tashkil qilish uchun snap paketi.

Ta'kidlanishicha, ekspluatatsiya yaratish unchalik ahamiyatsiz bo'lmagan vazifa bo'lib chiqdi, chunki snap-confine yordam dasturi Go'da xavfsiz dasturlash texnikasi yordamida yozilgan, AppArmor profillari asosida himoyaga ega, seccomp mexanizmi asosida tizim chaqiruvlarini filtrlaydi va undan foydalanadi. izolyatsiyalash uchun mount nom maydoni. Biroq, tadqiqotchilar tizimda ildiz huquqlariga ega bo'lish uchun ishlaydigan ekspluatatsiyani tayyorlashga muvaffaq bo'lishdi. Foydalanish kodi foydalanuvchilar taqdim etilgan yangilanishlarni o'rnatgandan so'ng bir necha hafta ichida nashr etiladi.

Manba: opennet.ru

a Izoh qo'shish