Mozilla Yaanza Utekelezaji wa Teknolojia ya Kutenga Maktaba ya RLBox

Watafiti kutoka Chuo Kikuu cha Stanford, Chuo Kikuu cha California huko San Diego na Chuo Kikuu cha Texas huko Austin maendeleo zana RLBox, ambayo inaweza kutumika kama safu ya ziada ya kutengwa ili kuzuia udhaifu katika maktaba za kazi. RLBox inalenga kutatua tatizo la usalama la maktaba za wahusika wengine wasioaminika ambazo haziko chini ya udhibiti wa wasanidi programu, lakini ambao udhaifu wao unaweza kuhatarisha mradi mkuu.

Kampuni ya Mozilla mipango tumia RLBox katika ujenzi wa Linux wa Firefox 74 na macOS hujenga Firefox 75 kutenganisha utekelezaji wa maktaba. Graphite, inayohusika na utoaji wa fonti. Hata hivyo, RLBox si maalum kwa Firefox na inaweza kutumika kutenga maktaba yoyote katika miradi ya kiholela. Maendeleo RLBox kuenea chini ya leseni ya MIT. RLBox kwa sasa inasaidia Linux na majukwaa ya MacOS, na usaidizi wa Windows unatarajiwa baadaye.

Mfumo Kazi ya RLBox inakuja ili kuunda nambari ya C/C++ ya maktaba iliyotengwa kuwa msimbo wa kiwango cha chini wa WebAssembly, ambao hutengenezwa kama moduli ya WebAssembly, ruhusa ambazo zimewekwa kuhusiana na moduli hii pekee (kwa mfano, maktaba). kwa kamba za usindikaji hazitaweza kufungua tundu la mtandao au faili) . Kubadilisha nambari ya C/C++ kuwa WebAssembly inafanywa kwa kutumia wasi-sdk.

Kwa utekelezaji wa moja kwa moja, moduli ya WebAssembly imejumuishwa kwenye msimbo wa mashine kwa kutumia mkusanyaji Lucet na huendesha kwa "nanoprocess" tofauti iliyotengwa na kumbukumbu nyingine ya programu. Kikusanyaji cha Lucet kinategemea msimbo sawa na injini ya JIT kuinua crane, inayotumika katika Firefox kutekeleza WebAssembly.

Moduli iliyokusanyika inafanya kazi katika eneo tofauti la kumbukumbu na haina ufikiaji wa nafasi nyingine ya anwani. Athari katika maktaba ikitumiwa, mvamizi atadhibitiwa na hataweza kufikia maeneo ya kumbukumbu ya mchakato mkuu au udhibiti wa uhamishaji nje ya mazingira yaliyotengwa.

Mozilla Yaanza Utekelezaji wa Teknolojia ya Kutenga Maktaba ya RLBox

Kiwango cha juu kinatolewa kwa watengenezaji API, ambayo hukuruhusu kupiga simu kazi za maktaba katika hali ya kutengwa. Washughulikiaji wa WebAssembly hawahitaji karibu rasilimali za ziada na mwingiliano nao sio polepole zaidi kuliko kuita kazi za kawaida (kazi za maktaba zinatekelezwa kwa njia ya nambari asilia, na gharama za juu hutokea tu wakati wa kunakili na kuangalia data katika mchakato wa mwingiliano na waliotengwa. mazingira). Vitendaji vya maktaba vilivyotengwa haviwezi kuitwa moja kwa moja na lazima vifikiwe kwa kutumia
safu invoke_sandbox_function().

Kwa upande mwingine, ikiwa ni muhimu kuita vitendaji vya nje kutoka kwa maktaba, vitendaji hivi lazima vifafanuliwe kwa uwazi kwa kutumia njia ya register_callback (kwa chaguo-msingi, RLBox hutoa ufikiaji wa vitendaji. maktaba ya kawaida) Ili kuhakikisha usalama wa kumbukumbu, utengaji wa utekelezaji wa msimbo hautoshi na lazima pia uhakikishe kwamba mitiririko ya data iliyorejeshwa imethibitishwa.

Thamani zinazozalishwa katika mazingira ya pekee huwekwa alama kama zisizoaminika na zenye ukomo wa matumizi alama zilizochafuliwa na kwa "kusafisha" wanahitaji uthibitishaji na kunakili kwenye kumbukumbu ya programu.
Bila kusafishwa, kujaribu kutumia data iliyochafuliwa katika muktadha unaohitaji data ya kawaida (na kinyume chake) husababisha makosa kuzalishwa kwa wakati wa kukusanya. Hoja ndogo za utendakazi, thamani za kurejesha, na miundo hupitishwa kupitia kunakili kati ya kumbukumbu ya mchakato na kumbukumbu ya kisanduku cha mchanga. Kwa seti kubwa za data, kumbukumbu imetengwa katika mazingira ya pekee na pointer ya marejeleo ya moja kwa moja ya sanduku la mchanga inarudishwa kwa mchakato mkuu.

Chanzo: opennet.ru

Kuongeza maoni