Dobësia kritike në Wasmtime, koha e ekzekutimit për aplikacionet WebAssembly

Përditësimet korrigjuese Wasmtime 6.0.1, 5.0.1 dhe 4.0.1 rregulluan cenueshmërinë (CVE-2023-26489), së cilës iu caktua një nivel kritik rreziku. Dobësia lejon që të dhënat të shkruhen në një zonë memorie jashtë kufijve të lejuar për kodin e izoluar të WebAssembly, i cili potencialisht mund të përdoret nga një sulmues për të ekzekutuar kodin e tij jashtë mjedisit të izoluar WASI.

Wasmtime është një kohë ekzekutimi për ekzekutimin e aplikacioneve WebAssembly me shtesa WASI (WebAssembly System Interface) si aplikacione të rregullta të pavarura. Paketa e veglave është shkruar në gjuhën Rust dhe cenueshmëria shkaktohet nga një gabim logjik në përcaktimin e rregullave lineare të adresimit të memories në gjeneratorin e kodit Cranelift, i cili përkthen një paraqitje të ndërmjetme të pavarur nga arkitekturat e harduerit në kodin e makinës të ekzekutueshme për arkitekturën x86_64.

Në veçanti, për aplikacionet WebAssembly, adresat efektive 35-bit u llogaritën në vend të adresave 33-bit të lejuara në WebAssembly, e cila zhvendosi kufirin e memories virtuale të lejuar për operacionet e leximit dhe shkrimit në 34 GB, ndërsa cilësimet e mjedisit të sandbox ofrojnë mbrojtje për 6 GB nga adresa bazë. Si rezultat, diapazoni i memories virtuale nga 6 në 34 GB nga adresa bazë ishte i disponueshëm për lexim dhe shkrim nga aplikacionet WebAssembly. Kjo memorie mund të presë mjedise të tjera WebAssembly ose komponentë të kohës së ekzekutimit të WebAssembly.

Nëse nuk është e mundur të përditësohet versioni Wasmtime, një zgjidhje për bllokimin e gabimit është të specifikoni opsionin "Config::static_memory_maximum_size(0)" për të mundësuar një kontroll të veçantë të kufijve në të gjitha akseset lineare të memories (duke rezultuar në një penalitet të konsiderueshëm të performancës) . Një tjetër opsion është përdorimi i cilësimit "Config::static_memory_guard_size(1 < 36)" për të rritur numrin e Faqeve të Gardës (një përjashtim që hidhet kur aksesohet) të vendosura në diapazonin problematik të memories virtuale (duke rezultuar në rezervimin e një sasie të madhe memorie virtuale dhe kufizimi i numrit që ekzekutojnë njëkohësisht aplikacionet WebAssembly).

Burimi: opennet.ru

Shto një koment