Bubblewrap 0.8 ning chiqarilishi, izolyatsiya qilingan muhitlarni yaratish uchun qatlam

Izolyatsiya qilingan muhitlar ishini tashkil qilish uchun Bubblewrap 0.8 vositalarining chiqarilishi mavjud bo'lib, odatda imtiyozsiz foydalanuvchilarning individual ilovalarini cheklash uchun ishlatiladi. Amalda, Bubblewrap Flatpak loyihasi tomonidan paketlardan ishga tushirilgan ilovalarni ajratish uchun qatlam sifatida ishlatiladi. Loyiha kodi C tilida yozilgan va LGPLv2+ litsenziyasi ostida tarqatiladi.

Izolyatsiya qilish uchun guruhlar, nomlar maydoni, Seccomp va SELinux-dan foydalanishga asoslangan an'anaviy Linux konteyner virtualizatsiya texnologiyalari qo'llaniladi. Konteynerni sozlash bo'yicha imtiyozli operatsiyalarni bajarish uchun Bubblewrap ildiz huquqlari bilan ishga tushiriladi (suid bayrog'i bilan bajariladigan fayl) va konteyner ishga tushirilgandan so'ng imtiyozlarni tiklaydi.

Konteynerlarda o'zingizning alohida identifikatorlar to'plamidan foydalanishga imkon beruvchi nomlar maydoni tizimida foydalanuvchi nomlari bo'shliqlarini faollashtirish ish uchun talab qilinmaydi, chunki u ko'plab tarqatishlarda sukut bo'yicha ishlamaydi (Bubblewrap cheklangan suidi ilovasi sifatida joylashtirilgan. foydalanuvchi nomlari imkoniyatlarining quyi to'plami - barcha foydalanuvchi va jarayon identifikatorlarini muhitdan chiqarib tashlash uchun joriydan tashqari, CLONE_NEWUSER va CLONE_NEWPID rejimlari qo'llaniladi). Qo'shimcha himoya qilish uchun Bubblewrap ostida bajarilgan dasturlar PR_SET_NO_NEW_PRIVS rejimida ishga tushiriladi, bu yangi imtiyozlarga ega bo'lishni taqiqlaydi, masalan, setuid bayrog'i mavjud bo'lsa.

Fayl tizimi darajasida izolyatsiya sukut bo'yicha yangi o'rnatish nom maydonini yaratish orqali amalga oshiriladi, unda tmpfs yordamida bo'sh ildiz bo'limi yaratiladi. Agar kerak bo'lsa, tashqi FS bo'limlari ushbu bo'limga "mount β€”bind" rejimida biriktiriladi (masalan, "bwrap β€”ro-bind /usr /usr" opsiyasi bilan ishga tushirilganda, /usr bo'limi asosiy tizimdan uzatiladi. faqat o'qish rejimida). Tarmoq imkoniyatlari CLONE_NEWNET va CLONE_NEWUTS bayroqlari orqali tarmoq stekini izolyatsiyalash bilan orqaga qaytish interfeysiga kirish bilan cheklangan.

Setuid ishga tushirish modelidan foydalanadigan shunga o'xshash Firejail loyihasidan asosiy farq shundaki, Bubblewrap-da konteyner yaratish qatlami faqat kerakli minimal imkoniyatlarni va grafik ilovalarni ishga tushirish, ish stoli bilan o'zaro ishlash va so'rovlarni filtrlash uchun zarur bo'lgan barcha ilg'or funktsiyalarni o'z ichiga oladi. Pulseaudio-ga, Flatpak tomoniga o'tkaziladi va imtiyozlar qayta o'rnatilgandan so'ng amalga oshiriladi. Boshqa tomondan, Firejail barcha tegishli funktsiyalarni bitta bajariladigan faylda birlashtiradi, bu esa xavfsizlikni kerakli darajada tekshirish va saqlashni qiyinlashtiradi.

Yangi nashrda:

  • Sandbox muhitida o'zining ichki foydalanuvchi nom maydonini yaratishni o'chirish uchun "--disable-userns" opsiyasi qo'shildi.
  • "--disable-userns" opsiyasidan foydalanilganda mavjud foydalanuvchi identifikatori maydoni ishlatilganligini tekshirish uchun "--assert-userns-disabled" opsiyasi qo'shildi.
  • Yadrodagi CONFIG_SECCOMP va CONFIG_SECCOMP_FILTER sozlamalarini oβ€˜chirib qoβ€˜yish bilan bogβ€˜liq xato xabarlarining ma’lumotlar tarkibi oshirildi.

Manba: opennet.ru

a Izoh qo'shish