Mozilla RLBox kutubxonasini izolyatsiya qilish texnologiyasini joriy qilishni boshladi

Stenford universiteti, San-Diegodagi Kaliforniya universiteti va Ostindagi Texas universiteti tadqiqotchilari rivojlangan asboblar RLBox, bu funksiya kutubxonalaridagi zaifliklarni bloklash uchun qo'shimcha izolyatsiya qatlami sifatida ishlatilishi mumkin. RLBox ishlab chiquvchilar nazorati ostida bo'lmagan, ammo zaifliklari asosiy loyihani buzishi mumkin bo'lgan ishonchsiz uchinchi tomon kutubxonalarining xavfsizlik muammosini hal qilishga qaratilgan.

Mozilla kompaniyasi rejalashtirmoqda kutubxonaning bajarilishini izolyatsiya qilish uchun Firefox 74-ning Linux va macOS-ning Firefox 75 tuzilmalarida RLBox-dan foydalaning Grafit, shriftlarni ko'rsatish uchun mas'ul. Biroq, RLBox Firefox-ga xos emas va ixtiyoriy loyihalarda har qanday kutubxonalarni ajratish uchun ishlatilishi mumkin. Ishlanmalar RLBox tarqaldi MIT litsenziyasi ostida. RLBox hozirda Linux va macOS platformalarini qo‘llab-quvvatlaydi, keyinroq Windows qo‘llab-quvvatlashi kutiladi.

mexanizm RLBox ishi izolyatsiya qilingan kutubxonaning C/C++ kodini past darajadagi oraliq WebAssembly kodiga kompilyatsiya qilishdan iborat bo‘lib, keyinchalik u WebAssembly moduli sifatida ishlab chiqilgan bo‘lib, uning ruxsatlari faqat ushbu modulga (masalan, kutubxonaga) nisbatan o‘rnatiladi. satrlarni qayta ishlash uchun tarmoq rozetkasini yoki faylni ochib bo'lmaydi). C/C++ kodini WebAssembly ga aylantirish yordamida amalga oshiriladi wasi-sdk.

To'g'ridan-to'g'ri bajarish uchun WebAssembly moduli kompilyator yordamida mashina kodiga kompilyatsiya qilinadi Lucet va ilova xotirasining qolgan qismidan ajratilgan alohida “nanoprosesda” ishlaydi. Lucet kompilyatori JIT dvigateli bilan bir xil kodga asoslangan Kranelift, Firefox-da WebAssembly-ni bajarish uchun ishlatiladi.

Yig'ilgan modul alohida xotira maydonida ishlaydi va manzil maydonining qolgan qismiga kirish imkoniga ega emas. Agar kutubxonadagi zaiflikdan foydalanilsa, tajovuzkor cheklangan bo'ladi va asosiy jarayonning xotira joylariga kira olmaydi yoki izolyatsiya qilingan muhitdan tashqarida boshqaruvni o'tkaza olmaydi.

Mozilla RLBox kutubxonasini izolyatsiya qilish texnologiyasini joriy qilishni boshladi

Ishlab chiquvchilar uchun yuqori darajadagi ma'lumotlar taqdim etiladi API, bu kutubxona funksiyalarini izolyatsiya rejimida chaqirish imkonini beradi. WebAssembly ishlov beruvchilari deyarli hech qanday qo'shimcha resurslarni talab qilmaydi va ular bilan o'zaro ta'sir qilish oddiy funktsiyalarni chaqirishdan ko'ra sekinroq emas (kutubxona funktsiyalari mahalliy kod shaklida amalga oshiriladi va qo'shimcha xarajatlar faqat izolyatsiya qilingan muhit bilan o'zaro aloqada ma'lumotlarni nusxalash va tekshirishda yuzaga keladi). Izolyatsiya qilingan kutubxona funktsiyalarini bevosita chaqirib bo'lmaydi va ulardan foydalanish kerak
qatlamni invoke_sandbox_function().

O'z navbatida, agar kutubxonadan tashqi funktsiyalarni chaqirish kerak bo'lsa, bu funktsiyalar register_callback usuli yordamida aniq belgilanishi kerak (odatiy bo'lib, RLBox funksiyalarga kirishni ta'minlaydi. standart kutubxona). Xotira xavfsizligini ta'minlash uchun kodni bajarish izolyatsiyasi etarli emas va qaytarilgan ma'lumotlar oqimlarini tekshirishni ham talab qiladi.

Alohida muhitda yaratilgan qiymatlar ishonchsiz va cheklangan foydalanish sifatida belgilanadi iflos belgilar va "tozalash" uchun ular talab qiladi tekshirish va ilova xotirasiga nusxalash.
Tozalashsiz, buzilgan ma'lumotlardan muntazam ma'lumotlarni talab qiladigan kontekstda foydalanishga urinish (va aksincha) kompilyatsiya vaqtida xatolar paydo bo'lishiga olib keladi. Kichik funktsiya argumentlari, qaytarish qiymatlari va tuzilmalar jarayon xotirasi va sandbox xotirasi o'rtasida nusxa ko'chirish orqali uzatiladi. Katta ma'lumotlar to'plamlari uchun xotira ajratilgan muhitda ajratiladi va to'g'ridan-to'g'ri sinov maydoniga mos yozuvlar ko'rsatkichi asosiy jarayonga qaytariladi.

Manba: opennet.ru

a Izoh qo'shish