Ish-hetues nga Universiteti i Stanfordit, Universiteti i Kalifornisë në San Diego dhe Universiteti i Teksasit në Austin instrumentin , i cili mund të përdoret si një nivel shtesë izolimi për t'i bllokuar dobësitë në bibliotekat funksionale. RLBox synon të zgjidhë problemin e sigurisë me bibliotekat e palëve të treta që nuk janë nën kontrollin e zhvilluesve, por dobësitë në të cilat mund të komprometojnë projektin kryesor.
Kompania Mozilla të angazhojë RLBox në ndërtimet Linux të Firefox 74 dhe ndërtimet macOS të Firefox 75 për izolimin e ekzekutimit të bibliotekës , e cila është përgjegjëse për renditjen e fonteve. Në këtë kuptim, RLBox nuk është specifik për Firefox dhe mund të përdoret për izolimin e çdo biblioteke në projekte të ndryshme. RLBox në përputhje me licencën MIT. Në këtë moment, RLBox mbështet punën në platformat Linux dhe macOS, mbështetje për Windows pritet më vonë.
i funksionimit të RLBox përbëhet nga kompaktimi i kodit C/C++ të bibliotekës së izoluar në kodin ndërmjetës të nivelit të ulët WebAssembly, i cili më pas formohet në një modul WebAssembly, autoritetet e të cilit caktohen në lidhje vetëm me këtë modul (p.sh., një bibliotekë për përpunimin e vargjeve nuk do të jetë në gjendje të hapë një soket rrjeti apo një skedar). Transformimi i kodit C/C++ në WebAssembly bëhet me ndihmën e .
Për ekzekutimin e menjëhershëm, moduli WebAssembly kompilohet në kodin makinerik me ndihmën e kompilatorit dhe ekzekutohet në një "nano-proces" të ndarë, i izoluar nga pjesa tjetër e memories së aplikacionit. Kompilatori Lucet bazohet në të njëjtin kod si motori JIT , i përdorur në Firefox për ekzekutimin e WebAssembly.
Moduli i ndërtuar punon në një zonë të veçantë të memories dhe nuk ka qasje në hapësirën tjetër adresore. Në rastin e shfrytëzimit të dobësisë në bibliotekë, sulmuesi do të jetë i kufizuar dhe nuk do të mund të aksesojë zonat e memories së procesit kryesor ose të transferojë kontrollin jashtë mjedisit të izoluar.
Për zhvilluesit ofrohet një nivel i lartë , i cili lejon thirrjen e funksioneve të bibliotekës në modin e izoluar. WebAssembly-ndihmësit praktikisht nuk kërkojnë burime shtesë dhe ndërlidhja me ta nuk është shumë më e ngadalshme se thirrja e funksioneve të zakonshme (funksionet e bibliotekës ekzekutohen në formën e kodit natyror, dhe shpenzimet ndodhin vetëm gjatë kopjimit dhe kontrollimit të të dhënave gjatë ndërveprimit me mjedisin e izoluar). Funksionet e bibliotekës së izoluar nuk mund të thirren direkt dhe për të arritur tek ato është e nevojshme të aplikohet
shtresa invoke_sandbox_function().
Nga ana tjetër, nëse nga biblioteka duhet të thirren funksione të jashtme, këto funksione duhet të jenë qartë të përcaktuara duke përdorur metodën register_callback (me të drejtë RLBox ofron akses në funksionet ). Për të siguruar një funksionim të sigurt të memories (memory safety) e izolimit të ekzekutimit të kodit nuk është e mjaftueshme dhe është e nevojshme të sigurohet gjithashtu kontrolli i rrjedhave të të dhënave të kthyera.
Vlerat e formuara nĂ« mjedisin e izoluar shĂ«nohen si tĂ« dyshimta, kufizohen pĂ«rmes dhe pĂ«r âpastriminâ kĂ«rkojnĂ« dhe kopjim nĂ« memorien e aplikacionit.
Pa pastrim, pĂ«rpjekja pĂ«r tĂ« pĂ«rdorur tĂ« dhĂ«na tainted nĂ« njĂ« kontekst qĂ« kĂ«rkon tĂ« dhĂ«na tĂ« zakonshme (dhe anasjelltas) çon nĂ« gjenerimin e gabimeve nĂ« fazĂ«n e kompaktimit. Argumentet e vogla tĂ« funksioneve, vlerat e kthyera dhe strukturat kalohen pĂ«rmes kopjimit midis memorisĂ« sĂ« procesit dhe memories sĂ« mjedisit tĂ« izoluar. PĂ«r grupe mĂ« tĂ« mĂ«dha tĂ« dhĂ«nash, memoria ndahet nĂ« mjedisin e izoluar, ndĂ«rsa procesi kryesor merr njĂ« tregues tĂ« drejtpĂ«rdrejtĂ« âsandbox-referenceâ.
Burimi: opennet.ru
