Mozilla fillon zbatimin e teknologjisë së izolimit të bibliotekës RLBox

Studiues nga Universiteti Stanford, Universiteti i Kalifornisë në San Diego dhe Universiteti i Teksasit në Austin zhvilluar mjetet RLBox, e cila mund të përdoret si një shtresë shtesë izolimi për të bllokuar dobësitë në bibliotekat e funksioneve. RLBox synon të zgjidhë problemin e sigurisë së bibliotekave të palëve të treta jo të besueshme që nuk janë nën kontrollin e zhvilluesve, por dobësitë e të cilave mund të komprometojnë projektin kryesor.

Kompania Mozilla planet përdorni RLBox në ndërtimet Linux të Firefox 74 dhe macOS të Firefox 75 për të izoluar ekzekutimin e bibliotekës grafit, përgjegjës për paraqitjen e shkronjave. Megjithatë, RLBox nuk është specifik për Firefox-in dhe mund të përdoret për të izoluar çdo bibliotekë në projekte arbitrare. Zhvillimet RLBox përhapet me licencë MIT. RLBox aktualisht mbështet platformat Linux dhe macOS, me mbështetjen e Windows që pritet më vonë.

mekanizëm Puna e RLBox zbret në përpilimin e kodit C/C++ të një biblioteke të izoluar në kodin e ndërmjetëm të nivelit të ulët WebAssembly, i cili më pas është projektuar si një modul WebAssembly, lejet e të cilit vendosen vetëm në lidhje me këtë modul (për shembull, një bibliotekë për përpunimin e vargjeve nuk do të jetë në gjendje të hapë një prizë ose skedar rrjeti) . Konvertimi i kodit C/C++ në WebAssembly bëhet duke përdorur wasi-sdk.

Për ekzekutim të drejtpërdrejtë, moduli WebAssembly përpilohet në kodin e makinës duke përdorur një përpilues Lucet dhe funksionon në një "nanoproces" të veçantë të izoluar nga pjesa tjetër e memories së aplikacionit. Përpiluesi Lucet bazohet në të njëjtin kod si motori JIT Ngritje vinçi, përdoret në Firefox për të ekzekutuar WebAssembly.

Moduli i montuar funksionon në një zonë të veçantë memorie dhe nuk ka akses në pjesën tjetër të hapësirës së adresave. Nëse një dobësi në bibliotekë shfrytëzohet, sulmuesi do të jetë i kufizuar dhe nuk do të jetë në gjendje të hyjë në zonat e kujtesës të procesit kryesor ose të transferojë kontrollin jashtë mjedisit të izoluar.

Mozilla fillon zbatimin e teknologjisë së izolimit të bibliotekës RLBox

Informacioni i nivelit të lartë ofrohet për zhvilluesit API, i cili ju lejon të telefononi funksionet e bibliotekës në modalitetin e izolimit. Trajtuesit WebAssembly nuk kërkojnë pothuajse asnjë burim shtesë dhe ndërveprimi me ta nuk është shumë më i ngadalshëm sesa thirrja e funksioneve të zakonshme (funksionet e bibliotekës ekzekutohen në formën e kodit vendas, dhe kostot e përgjithshme lindin vetëm kur kopjoni dhe kontrolloni të dhënat gjatë ndërveprimit me mjedisin e izoluar). Funksionet e izoluara të bibliotekës nuk mund të thirren drejtpërdrejt dhe duhet të aksesohen duke përdorur
shtresa invoke_sandbox_function().

Nga ana tjetër, nëse është e nevojshme të thirrni funksione të jashtme nga biblioteka, këto funksione duhet të përcaktohen në mënyrë eksplicite duke përdorur metodën register_callback (si parazgjedhje, RLBox siguron qasje në funksione bibliotekë standarde). Për të siguruar sigurinë e kujtesës, izolimi i ekzekutimit të kodit nuk është i mjaftueshëm dhe kërkon gjithashtu kontrollimin e rrjedhave të të dhënave të kthyera.

Vlerat e krijuara në një mjedis të izoluar shënohen si të pabesueshme dhe të kufizuara në përdorim shenja të ndotura dhe për “pastrim” kërkojnë verifikimi dhe kopjimi në memorien e aplikacionit.
Pa pastrim, përpjekja për të përdorur të dhëna të ndotura në një kontekst që kërkon të dhëna të rregullta (dhe anasjelltas) rezulton në gjenerimin e gabimeve në kohën e përpilimit. Argumentet e funksioneve të vogla, vlerat e kthimit dhe strukturat kalohen përmes kopjimit midis kujtesës së procesit dhe kujtesës së sandbox. Për grupe të mëdha të dhënash, memoria shpërndahet në një mjedis të izoluar dhe një tregues i drejtpërdrejtë i referencës së sandbox kthehet në procesin kryesor.

Burimi: opennet.ru

Shto një koment