Kritična ranljivost v Wasmtime, izvajalnem okolju za aplikacije WebAssembly

Korektivne posodobitve Wasmtime 6.0.1, 5.0.1 in 4.0.1 so odpravile ranljivost (CVE-2023-26489), ki ji je bila dodeljena kritična stopnja nevarnosti. Ranljivost omogoča zapisovanje podatkov v pomnilniško območje zunaj meja, ki so dovoljene za izolirano kodo WebAssembly, kar bi lahko napadalec potencialno uporabil za izvajanje svoje kode zunaj izoliranega okolja WASI.

Wasmtime je izvajalno okolje za izvajanje aplikacij WebAssembly z razširitvami WASI (WebAssembly System Interface) kot običajnih samostojnih aplikacij. Zbirka orodij je napisana v jeziku Rust, ranljivost pa je posledica logične napake pri definiranju pravil linearnega naslavljanja pomnilnika v generatorju kode Cranelift, ki prevede vmesno predstavitev, neodvisno od arhitektur strojne opreme, v izvršljivo strojno kodo za arhitekturo x86_64.

Zlasti za aplikacije WebAssembly so bili izračunani 35-bitni efektivni naslovi namesto 33-bitnih naslovov, dovoljenih v WebAssembly, kar je premaknilo omejitev navideznega pomnilnika, dovoljenega za operacije branja in pisanja, na 34 GB, medtem ko nastavitve okolja peskovnika zagotavljajo zaščito za 6 GB od osnovnega naslova. Posledično je bil obseg navideznega pomnilnika od 6 do 34 GB od osnovnega naslova na voljo za branje in pisanje iz aplikacij WebAssembly. Ta pomnilnik lahko gosti druga okolja WebAssembly ali komponente izvajalnega okolja WebAssembly.

Če različice Wasmtime ni mogoče posodobiti, je rešitev za blokiranje napake podajanje možnosti »Config::static_memory_maximum_size(0)«, da omogočite ločeno preverjanje meja za vse dostope do linearnega pomnilnika (kar ima za posledico znatno poslabšanje zmogljivosti). . Druga možnost je, da uporabite nastavitev »Config::static_memory_guard_size(1 < 36)« za povečanje števila varovalnih strani (izjema, vržena ob dostopu), postavljenih v problematičen obseg navideznega pomnilnika (kar ima za posledico rezervacijo velike količine navideznega pomnilnika in omejevanje števila sočasno delujočih aplikacij WebAssembly).

Vir: opennet.ru

Dodaj komentar