Mozilla začína zavádzať technológiu izolácie knižníc RLBox

Výskumníci zo Stanfordovej univerzity, Kalifornskej univerzity v San Diegu a Texanskej univerzity v Austine vyvinuli nástroj RLBox, ktorý môže slúžiť ako dodatočná úroveň izolácie na blokovanie zraniteľností v knižniciach funkcií. RLBox je zameraný na riešenie problémov s bezpečnosťou nespoľahlivých externých knižníc, ktoré nie sú pod kontrolou vývojárov, ale zraniteľnosti v nich môžu ohroziť hlavný projekt.

Spoločnosť Mozilla plánuje implementovať RLBox v linuxových zostavách Firefox 74 a macOS zostavách Firefox 75 na izoláciu vykonávania knižnice Graphite, ktorá je zodpovedná za vykresľovanie písiem. RLBox nie je špecifický len pre Firefox a môže sa používať na izoláciu akýchkoľvek knižníc v rôznych projektoch. Vývoj RLBox sú distribuované pod licenciou MIT. V súčasnosti RLBox podporuje fungovanie na platformách Linux a macOS, podpora Windows sa očakáva neskôr.

Mechanizmus činnosť RLBox spočíva v preklade C/C++ kódu izolovanej knižnice do nízkoúrovňového medziproduktu WebAssembly, ktorý je potom spracovaný ako WebAssembly modul, ktorého oprávnenia sú obmedzené iba na tento modul (napríklad knižnica na spracovanie reťazcov nebude schopná otvoriť sieťový socket alebo súbor). Prevod C/C++ kódu na WebAssembly sa realizuje pomocou wasi-sdk.

Na priame vykonávanie sa WebAssembly modul prekladá do strojového kódu pomocou kompilátora Lucet a vykonáva sa v oddelenom "nanoprocesse", ktorý je izolovaný od zvyšku pamäte aplikácie. Kompilátor Lucet je založený na rovnakom kóde ako JIT engine Cranelift, ktorý sa používa v Firefoxe na vykonávanie WebAssembly.

Skompilovaný modul pracuje v oddelenom priestore pamäte a nemá prístup k ostatnému adresnému priestoru. V prípade zneužitia zraniteľnosti v knižnici bude útočník obmedzený a nebude schopný získať prístup k oblastiam pamäte hlavného procesu alebo preniesť riadenie mimo izolovaného prostredia.

Mozilla začína zavádzať technológiu izolácie knižníc RLBox

Pre vývojárov je poskytnuté vysokoúrovňové API, ktorý umožňuje volať funkcie knižnice v izolačnom režime. WebAssembly spracovatelia si takmer nevyžadujú ďalšie zdroje a interakcia s nimi nie je výrazne pomalšia než volanie bežných funkcií (funkcie knižnice sa vykonávajú vo forme natívneho kódu a náklady vznikajú iba pri kopírovaní a kontrole údajov počas interakcie s izolovaným prostredím). Funkcie izolovanej knižnice nemôžu byť volané priamo a pre ich prístup je potrebné použiť
medzivrstvu invoke_sandbox_function().

Na druhej strane, ak je potrebné z knižnice volať vonkajšie funkcie, tieto funkcie musia byť výslovne definované pomocou metódy register_callback (podľa predvolenia RLBox poskytuje prístup k funkciám štandardnej knižnice). Na zabezpečenie bezpečnej práce s pamäťou (memory safety) izolácia vykonávania kódu nestačí a je potrebné zabezpečiť aj kontrolu vracaných tokov údajov.

Hodnoty vytvorené v izolovanom prostredí sú označené ako nedôveryhodné, sú obmedzené pomocou tainted značiek a na 'vyčistenie' potrebujú verifikáciu a kopírovanie do pamäte aplikácie.
Bez vyčistenia, pokus o použitie tainted údajov v kontexte, ktorý vyžaduje obyčajné údaje (a naopak), vedie k vygenerovaniu chýb počas kompilácie. Malé argumenty funkcií, vracané hodnoty a štruktúry sa prenášajú cez kopírovanie medzi pamäťou procesu a pamäťou izolovaného prostredia. Pre väčšie údaje sa pamäť prideľuje v izolovanom prostredí a hlavný proces dostáva priamy ukazovateľ 'sandbox-reference'.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster