Mozilo Komencas Efektivigon de RLBox Library Isolation Technology

Esploristoj de Universitato Stanford, Universitato de Kalifornio ĉe San-Diego kaj Universitato de Teksaso en Aŭstino evoluinta iloj RLBox, kiu povas esti uzata kiel kroma izola tavolo por bloki vundeblecojn en funkciobibliotekoj. RLBox celas solvi la sekurecan problemon de nefidindaj triaj bibliotekoj, kiuj ne estas sub la kontrolo de programistoj, sed kies vundeblecoj povas endanĝerigi la ĉefan projekton.

Kompanio Mozilla planoj uzu RLBox en Linukso-konstruaĵoj de Firefox 74 kaj macOS-konstruaĵoj de Firefox 75 por izoli bibliotekekzekuton Grafito, respondeca pri bildigo de tiparoj. Tamen, RLBox ne estas specifa por Fajrovulpo kaj povas esti uzata por izoli iujn ajn bibliotekojn en arbitraj projektoj. Evoluoj RLBox disvastigi sub MIT-licenco. RLBox nuntempe subtenas Linukso- kaj macOS-platformojn, kun Vindozo-subteno atendita poste.

Механизм La laboro de RLBox venas al kompili la C/C++-kodon de izolita biblioteko en malaltnivelan mezan WebAssembly-kodon, kiu tiam estas dizajnita kiel WebAssembly-modulo, kies permesoj estas fiksitaj rilate nur al ĉi tiu modulo (ekzemple, biblioteko. por prilaborado de ŝnuroj ne povos malfermi retan ingon aŭ dosieron). Konverti C/C++-kodon al WebAssembly estas farita uzante wasi-sdk.

Por rekta ekzekuto, la WebAssembly-modulo estas kompilita en maŝinkodon per kompililo Lucet kaj funkcias en aparta "nanoprocezo" izolita de la resto de la memoro de la aplikaĵo. La Lucet-kompililo baziĝas sur la sama kodo kiel la JIT-motoro Gruolifto, uzata en Fajrovulpo por ekzekuti WebAssembly.

La kunmetita modulo funkcias en aparta memorareo kaj ne havas aliron al la resto de la adresspaco. Se vundebleco en la biblioteko estas ekspluatata, la atakanto estos limigita kaj ne povos aliri memorareojn de la ĉefa procezo aŭ translokigi kontrolon ekster la izolita medio.

Mozilo Komencas Efektivigon de RLBox Library Isolation Technology

Altnivelaj informoj estas provizitaj por programistoj API, kiu ebligas al vi voki bibliotekfunkciojn en izolita reĝimo. WebAssembly-traktiloj postulas preskaŭ neniujn kromajn rimedojn kaj interago kun ili ne estas multe pli malrapida ol vokado de ordinaraj funkcioj (la bibliotekfunkcioj estas ekzekutitaj en la formo de indiĝena kodo, kaj superkostoj ekestas nur kiam kopiado kaj kontrolado de datumoj dum interagado kun la izolita medio). Izolitaj bibliotekfunkcioj ne povas esti vokitaj rekte kaj devas esti aliritaj uzante
tavolo invoke_sandbox_function().

Siavice, se necesas voki eksterajn funkciojn el la biblioteko, ĉi tiuj funkcioj devas esti eksplicite difinitaj per la metodo register_callback (defaŭlte, RLBox disponigas aliron al funkcioj. norma biblioteko). Por certigi memorsekurecon, izolado de ekzekuto de kodo ne sufiĉas kaj postulas ankaŭ kontroli la revenitajn datumfluojn.

Valoroj generitaj en izolita medio estas markitaj kiel nefidindaj kaj limigitaj uzadoj makulitaj markoj kaj por "purigado" ili postulas konfirmo kaj kopiado al aplika memoro.
Sen purigado, provi uzi makulitajn datenojn en kunteksto kiu postulas regulajn datenojn (kaj inverse) rezultigas erarojn estantajn generitajn en kompiltempo. Malgrandaj funkcioargumentoj, revenvaloroj, kaj strukturoj estas pasigitaj tra kopiado inter procezmemoro kaj sablokestomemoro. Por grandaj datenoj, memoro estas asignita en izolita medio kaj rekta sablokesto-referenca montrilo estas resendita al la ĉefprocezo.

fonto: opennet.ru

Aldoni komenton