Ang Mozilla Nagsugod sa Pagpatuman sa RLBox Library Isolation Technology

Mga tigdukiduki gikan sa Stanford University, sa University of California sa San Diego ug sa University of Texas sa Austin naugmad himan RLBox, nga mahimong gamiton isip usa ka dugang nga isolation layer aron babagan ang mga kahuyang sa function library. Ang RLBox gitumong sa pagsulbad sa problema sa seguridad sa dili kasaligan nga mga librarya sa ikatulo nga partido nga wala sa kontrol sa mga developer, apan kansang mga kahuyangan mahimong makompromiso ang panguna nga proyekto.

Kompanya sa Mozilla mga plano gamita ang RLBox sa Linux nga nagtukod sa Firefox 74 ug macOS nagtukod sa Firefox 75 aron ihimulag ang pagpatuman sa librarya Graphite, responsable sa paghubad sa mga font. Bisan pa, ang RLBox dili espesipiko sa Firefox ug mahimong magamit aron ihimulag ang bisan unsang mga librarya sa arbitraryong mga proyekto. Mga kalamboan RLBox pagkaylap ubos sa lisensya sa MIT. Gisuportahan karon sa RLBox ang mga platform sa Linux ug macOS, nga gipaabut sa ulahi ang suporta sa Windows.

Mekanismo Ang trabaho sa RLBox naggikan sa pag-compile sa C/C++ code sa usa ka nahilit nga librarya ngadto sa ubos nga lebel nga intermediate WebAssembly code, nga gidesinyo isip usa ka WebAssembly module, ang mga permiso niini gitakda nga nalangkit niini nga module (pananglitan, usa ka librarya. alang sa pagproseso sa mga kuwerdas dili makahimo sa pag-abli sa usa ka network socket o file) . Ang pag-convert sa C/C++ code ngadto sa WebAssembly gihimo gamit wasi-sdk.

Alang sa direktang pagpatuman, ang WebAssembly module gihugpong sa machine code gamit ang compiler Lucet ug nagdagan sa usa ka bulag nga "nanoprocess" nga nahimulag gikan sa nahabilin nga panumduman sa aplikasyon. Ang Lucet compiler gibase sa parehas nga code sa JIT engine Pag-cranelift, gigamit sa Firefox aron ipatuman ang WebAssembly.

Ang gipundok nga module naglihok sa usa ka bulag nga lugar sa panumduman ug wala’y access sa nahabilin nga lugar sa address. Kung ang usa ka kahuyang sa librarya gipahimuslan, ang tig-atake mahimong limitado ug dili maka-access sa mga lugar sa memorya sa panguna nga proseso o pagbalhin sa kontrol sa gawas sa nahilit nga palibot.

Ang Mozilla Nagsugod sa Pagpatuman sa RLBox Library Isolation Technology

Ang taas nga lebel nga impormasyon gihatag alang sa mga developers API, nga nagtugot kanimo sa pagtawag sa mga function sa library sa isolation mode. Ang mga tigdumala sa WebAssembly nagkinahanglan og halos walay dugang nga mga kapanguhaan ug ang interaksyon uban kanila dili mas hinay kay sa pagtawag sa ordinaryo nga mga gimbuhaton (ang librarya nga mga gimbuhaton gipatuman sa porma sa lumad nga code, ug ang overhead gasto motungha lamang sa diha nga ang pagkopya ug pagsusi sa data sa panahon sa interaksyon uban sa nahilit nga palibot). Ang nahilit nga mga gimbuhaton sa librarya dili matawag nga direkta ug kinahanglan nga ma-access gamit ang
layer invoke_sandbox_function().

Sa baylo, kung gikinahanglan ang pagtawag sa mga eksternal nga gimbuhaton gikan sa librarya, kini nga mga gimbuhaton kinahanglan nga tin-aw nga gihubit gamit ang register_callback nga pamaagi (sa default, ang RLBox naghatag og access sa mga gimbuhaton standard nga librarya). Aron masiguro ang kaluwasan sa panumduman, ang pag-inusara sa pagpatuman sa code dili igo ug kinahanglan usab nga susihon ang gibalik nga mga sapa sa datos.

Ang mga kantidad nga nahimo sa usa ka nahilit nga palibot gimarkahan nga dili kasaligan ug limitado nga paggamit hugaw nga mga marka ug alang sa "paglimpyo" gikinahanglan nila pamatuod ug pagkopya sa memorya sa aplikasyon.
Kung wala’y paglimpyo, ang pagsulay sa paggamit sa hugaw nga datos sa konteksto nga nanginahanglan regular nga datos (ug vice versa) moresulta sa mga sayup nga nahimo sa oras sa pag-compile. Ang gagmay nga mga argumento sa function, mga kantidad sa pagbalik, ug mga istruktura gipasa pinaagi sa pagkopya tali sa memorya sa proseso ug memorya sa sandbox. Alang sa dagkong mga set sa datos, ang memorya gigahin sa usa ka nahilit nga palibot ug usa ka direkta nga sandbox-reference pointer gibalik sa nag-unang proseso.

Source: opennet.ru

Idugang sa usa ka comment