Mozilla RLBox номын санг тусгаарлах технологийг хэрэгжүүлж эхэллээ

Стэнфордын их сургууль, Сан Диего дахь Калифорнийн их сургууль, Остин дахь Техасын их сургуулийн судлаачид боловсруулсан хэрэгсэл RLBox, энэ нь функцын сангуудын эмзэг байдлыг хаахын тулд нэмэлт тусгаарлах давхарга болгон ашиглаж болно. RLBox нь хөгжүүлэгчдийн хяналтанд байдаггүй, гэхдээ сул тал нь үндсэн төслийг алдагдуулж болзошгүй гуравдагч талын үл итгэгчдийн номын сангийн аюулгүй байдлын асуудлыг шийдвэрлэхэд чиглэгддэг.

Mozilla компани төлөвлөгөө номын сангийн гүйцэтгэлийг тусгаарлахын тулд Firefox 74-ийн Linux хувилбарууд болон Firefox 75-ын macOS-ийн хувилбаруудад RLBox ашиглах Баланс, фонтыг үзүүлэх үүрэгтэй. Гэсэн хэдий ч RLBox нь Firefox-д зориулагдсан зүйл биш бөгөөд дурын төслүүдэд дурын сангуудыг тусгаарлахад ашиглаж болно. Хөгжил RLBox тархалт MIT лицензийн дагуу. RLBox нь одоогоор Linux болон macOS платформуудыг дэмждэг бөгөөд дараа нь Windows-ийн дэмжлэгийг хүлээж байна.

Механизм RLBox-ийн ажил нь тусгаарлагдсан номын сангийн C/C++ кодыг доод түвшний завсрын WebAssembly код болгон эмхэтгэх явдал бөгөөд дараа нь WebAssembly модуль хэлбэрээр бүтээгдсэн бөгөөд зөвшөөрлийг зөвхөн энэ модультай (жишээ нь, номын сан) тохируулдаг. стринг боловсруулахын тулд сүлжээний залгуур эсвэл файлыг нээх боломжгүй болно). C/C++ кодыг WebAssembly руу хөрвүүлэх нь ашиглан хийгддэг wasi-sdk.

Шууд гүйцэтгэхийн тулд WebAssembly модулийг хөрвүүлэгч ашиглан машины код болгон хөрвүүлдэг Лусет мөн програмын санах ойн бусад хэсгээс тусгаарлагдсан тусдаа "нано процесс" -д ажилладаг. Lucet хөрвүүлэгч нь JIT хөдөлгүүртэй ижил код дээр суурилдаг Кран өргөгч, Firefox-д WebAssembly-г гүйцэтгэхэд ашигладаг.

Угсарсан модуль нь тусдаа санах ойн хэсэгт ажилладаг бөгөөд хаягийн зайны үлдсэн хэсэгт хандах эрхгүй. Хэрэв номын сангийн эмзэг байдлыг ашиглавал халдагч хязгаарлагдмал байх бөгөөд үндсэн процессын санах ойн хэсгүүдэд хандах эсвэл тусгаарлагдсан орчноос гадуур хяналтыг шилжүүлэх боломжгүй болно.

Mozilla RLBox номын санг тусгаарлах технологийг хэрэгжүүлж эхэллээ

Хөгжүүлэгчид зориулсан өндөр түвшний мэдээллийг өгдөг API, энэ нь таныг тусгаарлах горимд номын сангийн функцуудыг дуудах боломжийг олгодог. WebAssembly зохицуулагчид бараг ямар ч нэмэлт нөөц шаарддаггүй бөгөөд тэдэнтэй харилцах нь энгийн функцуудыг дуудахаас хамаагүй удаан биш юм (номын сангийн функцууд нь эх код хэлбэрээр хийгддэг бөгөөд тусгаарлагдсан орчинтой харилцах явцад өгөгдлийг хуулж, шалгах үед л нэмэлт зардал гардаг). Тусгаарлагдсан номын сангийн функцуудыг шууд дуудах боломжгүй бөгөөд үүнийг ашиглан хандах шаардлагатай
давхарга invoke_sandbox_function().

Хариуд нь номын сангаас гадаад функцуудыг дуудах шаардлагатай бол эдгээр функцийг register_callback аргыг ашиглан тодорхой тодорхойлсон байх ёстой (анхдагчаар RLBox нь функцүүдэд хандах боломжийг олгодог. стандарт номын сан). Санах ойн аюулгүй байдлыг хангахын тулд кодын гүйцэтгэлийг тусгаарлах нь хангалтгүй бөгөөд буцаж ирсэн өгөгдлийн урсгалыг шалгахыг шаарддаг.

Тусгаарлагдсан орчинд бий болсон утгууд нь найдваргүй, хязгаарлагдмал хэрэглээ гэж тэмдэглэгдсэн байдаг бохирдсон тэмдэг мөн тэд "цэвэрлэгээ" шаарддаг баталгаажуулалт болон програмын санах ой руу хуулах.
Цэвэрлэгээгүйгээр, бохир өгөгдлийг тогтмол өгөгдөл шаарддаг контекст (мөн эсрэгээр) ашиглахыг оролдох нь эмхэтгэх үед алдаа гаргахад хүргэдэг. Функцийн жижиг аргументууд, буцах утгууд болон бүтцийг процессын санах ой болон хамгаалагдсан хязгаарлагдмал орчны санах ойн хооронд хуулбарлах замаар дамжуулдаг. Том өгөгдлийн багцын хувьд санах ойг тусгаарлагдсан орчинд хуваарилж, шууд хамгаалагдсан хязгаарлагдмал орчны лавлах заагчийг үндсэн процесс руу буцаана.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх