Bubblewrap 0.6 ning chiqarilishi, izolyatsiya qilingan muhitlarni yaratish uchun qatlam

Izolyatsiya qilingan muhitlar ishini tashkil qilish uchun Bubblewrap 0.6 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:

  • Meson yig'ish tizimi uchun qo'shimcha yordam. Hozircha Autotools yordamida qurish qoʻllab-quvvatlandi, ammo kelajakdagi versiyada olib tashlanadi.
  • Bir nechta seccomp dasturlarini qo'shish uchun "--add-seccomp" opsiyasi amalga oshirildi. Agar siz yana "--seccomp" parametrini belgilasangiz, faqat oxirgi parametr qo'llanilishi haqida ogohlantirish qo'shildi.
  • Git omboridagi asosiy filial nomi main deb o'zgartirildi.
  • Litsenziya va mualliflik huquqi ma'lumotlarini belgilash jarayonini birlashtiruvchi REUSE spetsifikatsiyasi uchun qisman qo'llab-quvvatlash qo'shildi. Ko'pgina kod fayllariga SPDX-License-Identifier sarlavhalari qo'shilgan. QAYTA QAYTA FOYDALANISH ko‘rsatmalariga rioya qilish qaysi litsenziya ilova kodining qaysi qismlariga tegishli ekanligini avtomatik aniqlashni osonlashtiradi.
  • Buyruqlar qatori argument hisoblagichining (argc) qiymatini tekshirish qo'shildi va hisoblagich nolga teng bo'lsa, favqulodda chiqishni amalga oshirdi. O'zgartirish Polkit'dagi CVE-2021-4034 kabi o'tkazilgan buyruq qatori argumentlarini noto'g'ri ishlatish natijasida yuzaga kelgan xavfsizlik muammolarini blokirovka qilishga yordam beradi.

Manba: opennet.ru

a Izoh qo'shish