Mozilla RLBox Liburutegien Isolamendu Teknologia inplementatzen hasten da

Stanford Unibertsitateko, San Diegoko Kaliforniako Unibertsitateko eta Austineko Texasko Unibertsitateko ikertzaileak garatu tresnak RLBox, funtzioen liburutegietako ahuleziak blokeatzeko isolamendu-geruza gehigarri gisa erabil daitekeena. RLBox garatzaileen kontrolpean ez dauden, baina haien ahultasunak proiektu nagusia arriskuan jar dezaketen konfiantzarik gabeko hirugarren liburutegien segurtasun arazoa konpontzera zuzenduta dago.

Mozilla konpainia planak erabili RLBox Firefox 74-en Linux-en eta macOS-en Firefox 75-en bertsioetan liburutegien exekuzioa isolatzeko Graphite, letra-tipoak errendatzearen arduraduna. Hala ere, RLBox ez da Firefox-en espezifikoa eta edozein liburutegi isolatzeko erabil daiteke proiektu arbitrarioetan. Garapenak RLBox barreiatu MIT lizentziapean. Une honetan RLBox-ek Linux eta macOS plataformak onartzen ditu, eta Windows-en laguntza geroago espero da.

mekanismo RLBox-en lana liburutegi isolatu baten C/C++ kodea behe-mailako tarteko WebAssembly kode batean konpilatzean datza, gero WebAssembly modulu gisa diseinatuta dagoena, zeinaren baimenak modulu honi bakarrik ezartzen zaizkio (adibidez, liburutegi bat). kateak prozesatzeko ezingo da sareko socket edo fitxategirik ireki) . C/C++ kodea WebAssembly bihurtzea erabiliz egiten da wasi-sdk.

Zuzeneko exekuziorako, WebAssembly modulua makina-kodean konpilatzen da konpilatzaile baten bidez Lucet eta aplikazioaren gainerako memoriatik isolatutako "nanoprozesu" bereizi batean exekutatzen da. Lucet konpilatzailea JIT motorren kode berean oinarritzen da Garabi-jasotzailea, Firefoxen erabiltzen da WebAssembly exekutatzeko.

Muntatutako moduluak memoria-eremu bereizi batean funtzionatzen du eta ez du gainerako helbide-espaziorako sarbidea. Liburutegiko ahultasun bat ustiatzen bada, erasotzailea mugatua izango da eta ezin izango du prozesu nagusiko memoria-eremuetan sartu edo ingurune isolatutik kanpo transferitu kontrola.

Mozilla RLBox Liburutegien Isolamendu Teknologia inplementatzen hasten da

Maila handiko informazioa garatzaileei eskaintzen zaie API, eta horrek liburutegiko funtzioetara deitzeko aukera ematen du isolamendu moduan. WebAssembly kudeatzaileek ez dute ia baliabide gehigarririk behar eta haiekin elkarreragina ez da funtzio arruntak deitzea baino askoz motelagoa (liburutegiaren funtzioak jatorrizko kode moduan exekutatzen dira, eta gainkostuak ingurune isolatuarekin elkarrekintzan zehar datuak kopiatzen eta egiaztatzean soilik sortzen dira). Liburutegiko funtzio isolatuak ezin dira zuzenean deitu eta erabilita atzitu behar dira
geruza invoke_sandbox_function().

Bestalde, liburutegitik kanpoko funtzioei deitzea beharrezkoa bada, funtzio hauek espresuki definitu behar dira register_callback metodoa erabiliz (lehenespenez, RLBox-ek funtzioetarako sarbidea ematen du. liburutegi estandarra). Memoria segurtasuna bermatzeko, kodea exekutatzeko isolamendua ez da nahikoa eta itzultzen diren datu-korronteak ere egiaztatzea eskatzen du.

Ingurune isolatu batean sortutako balioak fidagarriak eta erabilera mugatu gisa markatzen dira zikindutako markak eta β€œgarbitzeko” eskatzen dute egiaztapena eta aplikazioaren memorian kopiatzea.
Garbitu gabe, kutsatutako datuak ohiko datuak behar dituen testuinguru batean (eta alderantziz) erabiltzen saiatzeak akatsak sortzen ditu konpilazio garaian. Funtzio-argumentu txikiak, itzulera-balioak eta egiturak prozesu-memoriaren eta sandbox-aren memoriaren artean kopiatzearen bidez pasatzen dira. Datu multzo handietarako, memoria ingurune isolatu batean esleitzen da eta sandbox-erreferentzia zuzeneko erakuslea prozesu nagusira itzultzen da.

Iturria: opennet.ru

Gehitu iruzkin berria