Mozilla alustab RLBoxi raamatukogude isolatsiooni tehnoloogia rakendamist

Stanford Ülikooli, San Diegos asuva California Ülikooli ja Austini Texas Ülikooli teadlased on arendanud tööriistakomplekt RLBox, mis vĂ”ib toimida tĂ€iendava isoleerimise tasandina, et blokeerida haavatavusi funktsioonide raamatukogudes. RLBox keskendub mittevĂ”rgu kĂ”rvaliste teekide turvaprobleemi lahendamisele, mis ei ole arendajate kontrolli all, kuid mille haavatavused vĂ”ivad ohustada pĂ”hiprojekti.

EttevÔte Mozilla plaanib rakendada RLBox Linuxi versioonides Firefox 74 ja macOS versioonides Firefox 75, et isoleerida teegi tÀitmine Graphite, mis vastutab fondide joonistamise eest. RLBox ei ole Firefoxile spetsiifiline ja seda saab kasutada igasuguste teekide isoleerimiseks erinevates projektides. Arendused RLBox levitatakse MIT litsentsi alusel. Praegu toetab RLBox Linuxi ja macOS platvorme, Windowsi tugi on ootel.

Mehhanism RLBox'i töö seisneb C/C++ koodi isolatsiooni teegi kompileerimises madalama taseme vahefailikoodiks WebAssembly, mis seejÀrel vormistatakse WebAssembly moodulina, mille Ôigused on mÀÀratud ainult sellele moodulile (nÀiteks stringide töötlemise teek ei saa avada vÔrgusokke ega faile). C/C++ koodi muundamine WebAssembly'ks toimub wasi-sdk.

Kohese tĂ€itmise jaoks kompileeritakse WebAssembly moodul masina koodiks kompilatori Lucet ja see tĂ€idetakse eraldi "nanoprotsessis", mis on eraldatud rakenduse ĂŒlejÀÀnud mĂ€lust. Lucet'i kompilaator pĂ”hineb samal koodil, mis JIT-mootoril Cranelift, mida kasutatakse Firefoxis WebAssembly tĂ€itmiseks.

Kogutud moodul töötab eraldi mĂ€lu piirkonnas ja ei pÀÀse juurde ĂŒlejÀÀnud aadressiruumile. Raamatukogu haavatavuse Ă€rakasutamisel on rĂŒndajal piiratud juurdepÀÀs ning ta ei saa pöörduda pĂ”hiprotsessi mĂ€lu alade ega edastada juhtimist vĂ€ljapoole isoleeritud keskkonda.

Mozilla alustab RLBoxi raamatukogude isolatsiooni tehnoloogia rakendamist

Arendajatele on pakutud kĂ”rgetasemeline API, mis vĂ”imaldab kutsuda raamatukogu funktsioone isoleeritud reĆŸiimis. WebAssembly' töötlejad vajavad peaaegu ĂŒldse tĂ€iendavaid ressursse ja suhtlemine nendega ei ole oluliselt aeglasem kui tavaliste funktsioonide kutsumine (raamatukogu funktsioonid tĂ€idetakse natiivse koodina ning lisakulud tekivad ainult andmete kopeerimise ja kontrollimise kĂ€igus isoleeritud keskkonnaga suhtlemisel). Isoleeritud raamatukogu funktsioone ei saa otseselt kutsuda ning nendele juurdepÀÀsuks on vajalik rakendada
vahekihti invoke_sandbox_function().

Omakorda, kui raamatukogust on vaja vÀliseid funktsioone kutsuda, peavad need funktsioonid olema selgelt mÀÀratletud meetodi register_callback abil (eelnevalt RLBox vÔimaldab juurdepÀÀsu funktsioonidele standardsest raamatukogust). MÀlu ohutu toimimise tagamiseks (memory safety) ei piisa koodi tÀitmise isoleerimisest ja on vajalik ka tagada tagastatud andmevoogude kontrollimine.

Isoleeritud keskkonnas genereeritud vÀÀrtused mÀrgistatakse kui usaldamatud, neid piiratakse tainted-siltidega ja 'puhastamiseks' on vajalik kontrollimine ja kopeerimine rakenduse mÀllu.
Ilma puhastamiseta, katse kasutada tainted-andmeid kontekstis, kus on nÔutud tavalised andmed (ja vastupidi) pÔhjustab kompileerimise etapis vigu. VÀiksed funktsioonide argumendid, tagastatavad vÀÀrtused ja struktuurid edastatakse lÀbi kopeerimise protsessi mÀlu ja isoleeritud keskkonna mÀlu vahel. Suurte andmekogumite puhul eraldatakse mÀlu isoleeritud keskkonnas ning pÔhiprotsessile tagastatakse otseviit 'sandbox-reference'.

Allikas: opennet.ru

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster