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 өңдеушілері дерлік қосымша ресурстарды қажет етпейді және олармен әрекеттесу қарапайым функцияларды шақырудан әлдеқайда баяу емес (кітапхана функциялары жергілікті код түрінде орындалады, ал үстеме шығындар оқшауланған ортамен өзара әрекеттесу кезінде деректерді көшіру және тексеру кезінде ғана туындайды). Оқшауланған кітапхана функцияларын тікелей шақыруға болмайды және оларды пайдалану арқылы қол жеткізу керек
layer invoke_sandbox_function().

Өз кезегінде, кітапханадан сыртқы функцияларды шақыру қажет болса, бұл функциялар register_callback әдісі арқылы анық анықталуы керек (әдепкі бойынша RLBox функцияларға қол жеткізуді қамтамасыз етеді. стандартты кітапхана). Жад қауіпсіздігін қамтамасыз ету үшін кодты орындауды оқшаулау жеткіліксіз және қайтарылған деректер ағындарын тексеруді қажет етеді.

Оқшауланған ортада жасалған мәндер сенімсіз және шектеулі пайдалану ретінде белгіленеді ластанған белгілер және «тазалау» үшін олар қажет тексеру және қолданба жадына көшіру.
Тазалаусыз, кәдімгі деректерді қажет ететін контексте бүлінген деректерді пайдалану әрекеті (және керісінше) компиляция уақытында қателердің пайда болуына әкеледі. Шағын функция аргументтері, қайтарылатын мәндер және құрылымдар процесс жады мен құм жәшік жады арасында көшіру арқылы өтеді. Үлкен деректер жиындары үшін жад оқшауланған ортада бөлінеді және тікелей құм жәшігінің сілтеме көрсеткіші негізгі процеске қайтарылады.

Ақпарат көзі: opennet.ru

пікір қалдыру