RLBox, jaunā bibliotēkas izolācijas tehnoloģija, kuru izmanto Mozilla

Firefox logotips

Stenfordas universitātes pētniekiuz University of California Sandjego y la Teksasas Universitāte Ostinā Viņi ir attīstījušies rīku komplekts, kuram viņi deva vārdu "RLBox", ka var izmantot kā papildu izolācijas līmeni bloķēt ievainojamības funkciju bibliotēkās.

RLBox mērķis ir atrisināt trešo pušu bibliotēku drošības problēmu neuzticami, kurus nekontrolē izstrādātāji, bet gan ievainojamības, kurās galvenais projekts varētu tikt apdraudēts.

Mozilla plāno izmantot RLBox Firefox 74 būvējumos operētājsistēmām Linux un kopas macOS Firefox 75 izolēt grafīta bibliotēkas izpildi, kas ir atbildīga par avotu pārstāvēšanu.

Tajā pašā laikā RLBox nav specifisks Firefox, un to var izmantot, lai izolētu jebkuru bibliotēku patvaļīgos projektos.

Par RLBox

Darbības mehānisms RLBox apkopo C / C ++ kodu no izolētas bibliotēkas starpposma WebAssembly kodā zema līmeņa, kas pēc tam tiek izsniegts kā WebAssembly modulis, kura autoritāte ir iestatīta saistīšanai tikai ar šo moduli (piemēram, virkņu apstrādes bibliotēka nevar atvērt ligzdu vai tīkla failu) C / C ++ koda pārveidošana a Tīmekļa asambleja tiek veikta, izmantojot wasi-sdk.

Tiešai izpildei WebAssembly modulis tiek apkopots mašīnas kodā, izmantojot Lucet kompilatoru un tas darbojas "nanoprocesā" atsevišķi no pārējās lietojumprogrammas atmiņas. Lucet kompilatora pamatā ir tāds pats kods kā Cranelift JIT motoram, ko Firefox izmanto WebAssembly darbināšanai.

Samontētais modulis darbojas atsevišķā atmiņas zonā un tai nav piekļuves pārējai adrešu vietai. Bibliotēkas ievainojamības izmantošanas gadījumā uzbrucējs būs ierobežots un nevarēs piekļūt galvenā procesa atmiņas apgabaliem vai pārsūtīt vadību ārpus smilškastes.

Izstrādātājiem tiek nodrošināta augsta līmeņa API, kas ļauj izsaukt bibliotēkas funkcijas izolācijas režīmā.

L WebAssembly kontrolleriem gandrīz nav nepieciešami papildu resursi un mijiedarbība ar tām nav daudz lēnāka nekā parasto funkciju izsaukšana (bibliotēkas funkcijas darbojas vietējā koda formā, un pārslodze rodas tikai tad, kad kopējot un pārbaudot datus mijiedarbības procesā ar smilškastes vidi).

Izolētas bibliotēkas funkcijas nevar tieši izmantot, un, lai tām piekļūtu, jums jāizmanto slānis invoke_sandbox_function().

Savukārt, ja no bibliotēkas ir jāizsauc ārējās funkcijas, šīs funkcijas ir skaidri jādefinē, izmantojot metodi register_callback (pēc noklusējuma RLBox nodrošina piekļuvi standarta bibliotēkas funkcijām).

Lai nodrošinātu drošu atmiņas darbību, nepietiek ar koda izpildes izolēšanu un jums ir jānodrošina atgriezto datu plūsmu pārbaude.

Atsevišķā vidē radītās vērtības tiek atzīmētas kā neuzticamas, ierobežotas ar sabojātiem tagiem, un tām ir nepieciešama verifikācija un kopēšana lietojumprogrammas atmiņā "tīrīšanai".

Bez tīrīšanas mēģinājums izmantot piesārņotus datus kontekstā, kurā nepieciešami regulāri dati (un otrādi), kompilācijas posmā rada kļūdas.

Nelieli funkciju argumenti, atgriešanās vērtības un struktūras tiek nodotas, kopējot starp procesa atmiņu un smilškastes atmiņu. Lielām datu kopām atmiņa tiek piešķirta izolētā vidē, un tiešais rādītājs "smilškastes atsauce" tiek atgriezts galvenajā procesā.

RLBox izstrādes tiek izplatītas ar MIT licenci. Pašlaik RLBox atbalsta Linux un macOS un paredzams, ka vēlāk tas būs saderīgs ar Windows.

Ja vēlaties uzzināt vairāk par šo jauno tehnoloģiju, kuru Mozilla plāno ieviest Firefox, varat konsultēties ar tās attīstību, kā arī pārbaudīt API Šajā saitē.


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: Migels Ángels Gatóns
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.