RLBox, nová technológia izolácie knižníc, ktorú používa Mozilla

Logo Firefoxu

Výskumní pracovníci Stanfordskej univerzityv Kalifornská univerzita v San Diegu y la University of Texas v Austine Vyvinuli sa súbor nástrojov, ktoré pomenovali "RLBox", že možno použiť ako ďalšiu úroveň izolácie blokovať chyby v knižniciach funkcií.

Cieľom RLBoxu je vyriešiť bezpečnostný problém knižníc tretích strán nedôveryhodné, ktoré nie sú kontrolované vývojármi, ale zraniteľnosti, v ktorých by hlavný projekt mohol ohroziť.

Mozilla plánuje použiť RLBox v zostavách Firefoxu 74 pre Linux a Windows kompilácie macOS vo Firefoxe 75 izolovať vykonávanie knižnice Graphite, ktorý je zodpovedný za zastupovanie zdrojov.

RLBox zároveň nie je špecifický pre Firefox a je možné ho použiť na izoláciu ľubovoľnej knižnice v ľubovoľných projektoch.

O spoločnosti RLBox

Prevádzkový mechanizmus RLBox sa scvrkáva na kompiláciu kódu C / C ++ z izolovanej knižnice do prechodného kódu WebAssembly low-level, ktorý sa potom vydáva ako modul WebAssembly, ktorého autorita je nastavená tak, aby sa viazala iba na tento modul (napríklad knižnica na spracovanie reťazcov nemôže otvoriť soket alebo sieťový súbor) Konverzia kódu C / C ++ a WebAssembly sa vykonáva pomocou wasi-sdk.

Na priame vykonanie modul WebAssembly je kompilovaný do strojového kódu pomocou kompilátora Lucet a beží v „nanoprocese“ oddelene od zvyšku pamäte aplikácie. Kompilátor Lucet je založený na rovnakom kóde ako motor Cranelift JIT používaný vo Firefoxe na spustenie WebAssembly.

Zostavený modul pracuje v samostatnej oblasti pamäte a nemá prístup k zvyšku adresného priestoru. V prípade zneužitia zraniteľnosti v knižnici bude útočník obmedzený a nebude mať prístup k pamäťovým oblastiam hlavného procesu alebo k riadeniu prenosu mimo karanténu.

Pre vývojárov je k dispozícii rozhranie API na vysokej úrovni, ktoré vám umožňuje volať funkcie knižnice v izolovanom režime.

undefined Radiče WebAssembly nevyžadujú takmer žiadne ďalšie prostriedky a interakcia s nimi nie je oveľa pomalšia ako volanie bežných funkcií (funkcie knižnice bežia vo forme natívneho kódu a preťaženie nastáva iba pri kopírovaní a overovaní údajov v procese interakcie s karanténnym prostredím).

Funkcie izolovanej knižnice nie je možné vyvolať priamo a na prístup k nim musíte použiť vrstvu invoke_sandbox_function().

Ak naopak potrebujú volať externé funkcie z knižnice, musia byť tieto funkcie explicitne definované pomocou metódy register_callback (štandardne poskytuje RLBox prístup k štandardným funkciám knižnice).

Na zaistenie bezpečnej prevádzky pamäte izolácia vykonania kódu nestačí a musíte poskytnúť overenie vrátených tokov údajov.

Hodnoty generované v izolovanom prostredí sú označené ako nespoľahlivé, obmedzené znehodnotenými značkami a na účely vyčistenia si vyžadujú overenie a kopírovanie do pamäte aplikácie.

Bez vyčistenia vedie pokus o použitie znečistených údajov v kontexte, ktorý vyžaduje pravidelné údaje (a naopak), k generovaniu chýb vo fáze kompilácie.

Malé argumenty funkcií, návratové hodnoty a štruktúry sa odovzdávajú kopírovaním medzi pamäťou procesov a pamäťou karantény. Pre veľké súbory údajov je pamäť alokovaná v izolovanom prostredí a priamy ukazovateľ „sandbox reference“ sa vracia do hlavného procesu.

Vývoj RLBox sa distribuuje pod licenciou MIT. RLBox v súčasnosti podporuje systémy Linux a macOS a očakáva sa, že bude kompatibilný s Windows neskôr.

Ak sa chcete dozvedieť viac o tejto novej technológii, ktorú Mozilla plánuje implementovať do prehliadača Firefox, môžete sa poradiť s jej vývojom a vyskúšať API Na nasledujúcom odkaze.


Zanechajte svoj komentár

Vaša e-mailová adresa nebude zverejnená. Povinné položky sú označené *

*

*

  1. Zodpovedný za údaje: Miguel Ángel Gatón
  2. Účel údajov: Kontrolný SPAM, správa komentárov.
  3. Legitimácia: Váš súhlas
  4. Oznamovanie údajov: Údaje nebudú poskytnuté tretím stranám, iba ak to vyplýva zo zákona.
  5. Ukladanie dát: Databáza hostená spoločnosťou Occentus Networks (EU)
  6. Práva: Svoje údaje môžete kedykoľvek obmedziť, obnoviť a vymazať.