Mozilla principia l'implementazione di a tecnulugia di isolamentu di a biblioteca RLBox

I ricercatori di l'Università di Stanford, l'Università di California in San Diego è l'Università di Texas in Austin sviluppatu arnesi RLBox, chì pò esse usatu cum'è una capa d'isolamentu supplementu per bluccà e vulnerabilità in e librerie di funzioni. RLBox hè destinatu à risolve u prublema di sicurità di e biblioteche di terze parti senza fiducia chì ùn sò micca sottu à u cuntrollu di i sviluppatori, ma chì e vulnerabilità ponu cumprumette u prughjettu principale.

Cumpagnia Mozilla piani utilizate RLBox in Linux builds di Firefox 74 è macOS builds di Firefox 75 per isolà l'esecuzione di a biblioteca Graphite, rispunsevuli di rende i fonts. Tuttavia, RLBox ùn hè micca specificu per Firefox è pò esse usatu per isolà qualsiasi librerie in prughjetti arbitrarii. Sviluppi RLBox sparghje sottu licenza MIT. RLBox supporta attualmente e plataforme Linux è macOS, cù u supportu Windows previstu più tardi.

Mechanismu U travagliu di RLBox si riduce à cumpilà u codice C / C ++ di una biblioteca isolata in u codice WebAssembly intermediu di livellu bassu, chì hè tandu cuncepitu cum'è un modulu WebAssembly, chì i permessi sò stabiliti in relazione solu à stu modulu (per esempiu, una biblioteca. per processà e stringhe ùn puderà micca apre un socket di rete o un schedariu). A cunversione di codice C/C++ in WebAssembly hè fatta cù l'usu wasi-sdk.

Per l'esekzione diretta, u modulu WebAssembly hè cumpilatu in codice di macchina cù un compilatore Lucet è corre in un "nanoprocessu" separatu isolatu da u restu di a memoria di l'applicazione. U compilatore Lucet hè basatu annantu à u listessu codice chì u mutore JIT ascensore a gru, utilizatu in Firefox per eseguisce WebAssembly.

U modulu assemblatu opera in una zona di memoria separata è ùn hà micca accessu à u restu di u spaziu di indirizzu. Se una vulnerabilità in a biblioteca hè sfruttata, l'attaccante serà limitatu è ùn puderà micca accede à l'area di memoria di u prucessu principale o u cuntrollu di trasferimentu fora di l'ambiente isolatu.

Mozilla principia l'implementazione di a tecnulugia di isolamentu di a biblioteca RLBox

L'infurmazione di altu livellu hè furnita per i sviluppatori API, chì vi permette di chjamà e funzioni di a biblioteca in modu di isolamentu. I gestori di WebAssembly ùn necessitanu quasi nisuna risorsa supplementaria è l'interazzione cun elli ùn hè micca assai più lenta chè chjamà e funzioni ordinali (e funzioni di a biblioteca sò eseguite in forma di codice nativu, è i costi di sopra sò solu quandu si copianu è cuntrollà e dati in u prucessu di interazzione cù l'isolati). ambiente). E funzioni di biblioteca isolate ùn ponu micca esse chjamate direttamente è deve esse accede cù l'usu
layer invoke_sandbox_function().

À u turnu, s'ellu hè necessariu di chjamà funzioni esterne da a biblioteca, queste funzioni devenu esse esplicitamente definite cù u metudu register_callback (per difettu, RLBox furnisce l'accessu à e funzioni). biblioteca standard). Per assicurà a sicurezza di a memoria, l'isolamentu di l'esekzione di codice ùn hè micca abbastanza è richiede ancu di verificà i flussi di dati restituiti.

I valori generati in un ambiente isolatu sò marcati cum'è micca affidabili è limitati à l'usu segni contaminati è per "pulizia" anu bisognu verificazione è copia in memoria di l'applicazione.
Senza pulizziari, pruvate d'utilizà dati contaminati in un cuntestu chì esige dati regulare (è vice versa) si traduce in errori generati in tempu di compilazione. L'argumenti di e picculi funzioni, i valori di ritornu è e strutture sò passati da a copia trà a memoria di prucessu è a memoria di sandbox. Per i grandi setti di dati, a memoria hè attribuita in un ambiente isolatu è un puntatore di riferimentu di sandbox direttu hè tornatu à u prucessu principale.

Source: opennet.ru

Add a comment