RLBox, uus raamatukogu isoleerimise tehnoloogia, mida kasutab Mozilla

Firefoxi logo

Stanfordi ülikooli teadlasedon University of California San Diegos y la Texase ülikool Austinis Nad on arenenud tööriistade komplekt, millele nad nime panid "RLBox", et saab kasutada täiendava isolatsioonitasemena funktsioonide teekide haavatavuste blokeerimiseks.

RLBoxi eesmärk on lahendada kolmandate osapoolte raamatukogude turvalisuse probleem Mitteusaldusväärsed, mida arendajad ei kontrolli, kuid haavatavused, milles põhiprojekt võib ohtu sattuda.

Mozilla plaanib RLBoxi kasutada Firefoxi 74 ehitustes Linuxile ja kogumikud macOS Firefox 75-s Grafiidi teegi käitamise isoleerimiseks, mis vastutab allikate esindamise eest.

Samal ajal pole RLBox Firefoxile omane ja seda saab kasutada suvaliste projektide mis tahes teegi isoleerimiseks.

RLBoxi kohta

Töömehhanism RLBox taandub isoleeritud teegist C / C ++ koodi kompileerimisele vahepealseks WebAssembly koodiks madal tase, mis väljastatakse seejärel moodulina WebAssembly, mille autoriteet on määratud siduma ainult selle mooduliga (näiteks stringide töötlemise teek ei saa avada soklit ega võrgufaili) C / C ++ koodi teisendamine Veebikoosolek toimub wasi-sdk abil.

Otseseks täitmiseks WebAssembly moodul kompileeritakse Luceti kompilaatori abil masinakoodiks ja see töötab "nanoprotsessis", mis on rakenduse ülejäänud mälust eraldi. Luceti kompilaator põhineb samal koodil nagu Cranelift JIT mootor, mida Firefoxis WebAssembly'i käitamiseks kasutatakse.

Kokkupandud moodul töötab eraldi mälupiirkonnas ja tal pole juurdepääsu ülejäänud aadressiruumile. Teegi haavatavuse ärakasutamise korral on ründaja piiratud ja ta ei pääse juurde põhiprotsessi mälupiirkondadele ega kontrolli juhtimist väljaspool liivakasti.

Arendajatele on ette nähtud kõrgetasemeline API, mis võimaldab teil helistada teegi funktsioonidele eraldiseisvalt.

osa WebAss Assembly kontrollerid ei vaja peaaegu mingeid täiendavaid ressursse ja nendega suhtlemine ei ole palju aeglasem kui tavaliste funktsioonide kutsumine (raamatukogu funktsioonid töötavad algse koodi kujul ja ülekoormus toimub ainult andmete kopeerimisel ja kontrollimisel liivakasti keskkonnaga suhtlemise käigus) .

Isoleeritud teegi funktsioone ei saa otse esile kutsuda ja neile juurdepääsemiseks peate kihti kasutama invoke_sandbox_function().

Omakorda, kui neil on vaja teegist väliseid funktsioone välja kutsuda, tuleb need funktsioonid meetodi register_callback abil selgesõnaliselt määratleda (vaikimisi võimaldab RLBox juurdepääsu tavapärastele teegi funktsioonidele).

Mälu ohutu toimimise tagamiseks koodi täitmise eraldamisest ei piisa ja peate tagastama tagastatud andmevoogude kinnituse.

Eraldatud keskkonnas genereeritud väärtused on tähistatud ebausaldusväärsetena, piiratud saastunud siltidega ning nende puhastamiseks on vaja kontrollida ja kopeerida rakenduse mällu.

Puhastamata viib katse kasutada saastatud andmeid kontekstis, mis nõuab regulaarseid andmeid (ja vastupidi), kompileerimise etapis vigade tekkimist.

Väikesed funktsiooniargumendid, tagastusväärtused ja struktuurid edastatakse kopeerides protsessimälu ja liivakasti mälu vahel. Suurte andmekogumite jaoks eraldatakse mälu eraldatud keskkonnas ja otsene "liivakasti viite" osuti tagastatakse põhiprotsessi.

RLBoxi arendusi levitatakse MIT-litsentsi alusel. RLBox toetab praegu Linuxi ja macOS-i ja eeldatavasti ühildub hiljem Windowsiga.

Kui soovite rohkem teada saada selle uue tehnoloogia kohta, mida Mozilla kavatseb Firefoxis rakendada, saate selle arendamise kohta uurida ja API-d testida Järgmisel lingil.


Jäta oma kommentaar

Sinu e-postiaadressi ei avaldata. Kohustuslikud väljad on tähistatud *

*

*

  1. Andmete eest vastutab: Miguel Ángel Gatón
  2. Andmete eesmärk: Rämpsposti kontrollimine, kommentaaride haldamine.
  3. Seadustamine: teie nõusolek
  4. Andmete edastamine: andmeid ei edastata kolmandatele isikutele, välja arvatud juriidilise kohustuse alusel.
  5. Andmete salvestamine: andmebaas, mida haldab Occentus Networks (EL)
  6. Õigused: igal ajal saate oma teavet piirata, taastada ja kustutada.