Kritiska ievainojamība Wasmtime, izpildlaikā WebAssembly lietojumprogrammām

Wasmtime 6.0.1, 5.0.1 un 4.0.1 koriģējošie atjauninājumi novērš ievainojamību (CVE-2023-26489), kas ir novērtēta kā kritiska. Ievainojamība ļauj organizēt datu ierakstīšanu atmiņas apgabalā ārpus robežām, kas atļautas izolētam WebAssembly kodam, ko uzbrucējs var izmantot, lai organizētu sava koda izpildi ārpus izolētas WASI vides.

Wasmtime ir izpildlaiks WebAssembly lietojumprogrammu palaišanai ar WASI (WebAssembly System Interface) paplašinājumiem kā parastas atsevišķas lietojumprogrammas. Rīku komplekts ir rakstīts Rust valodā, un ievainojamību izraisa loģiska kļūda lineāro atmiņas adresēšanas noteikumu definīcijā Cranelift koda ģeneratorā, kas no aparatūras arhitektūrām neatkarīgu starpposma attēlojumu pārvērš izpildāmā mašīnas kodā x86_64 arhitektūrai.

Konkrēti, WebAssembly lietojumprogrammām tika aprēķinātas 35 bitu efektīvās adreses WebAssembly atļauto 33 bitu adrešu vietā, kas mainīja lasīšanas un rakstīšanas operācijām atļautās virtuālās atmiņas ierobežojumu uz 34 GB, savukārt smilškastes vides iestatījumi nodrošina aizsardzību 6 GB. no bāzes adreses. Rezultātā no WebAssembly lietojumprogrammu lasīšanai un rakstīšanai bija pieejams virtuālās atmiņas diapazons no 6 līdz 34 GB no bāzes adreses. Šī atmiņa var mitināt citas WebAssembly vides vai WebAssembly izpildlaika komponentus.

Ja nav iespējams atjaunināt Wasmtime versiju, kā risinājums kļūdas bloķēšanai tiek minēts, norādot opciju "Config::static_memory_maximum_size(0)", lai iespējotu obligātu atsevišķu robežu pārbaudi jebkurai lineārai piekļuvei atmiņai (kā rezultātā tiek ievērojami pasliktināta veiktspēja). Vēl viena iespēja ir izmantot iestatījumu "Config::static_memory_guard_size(1 < 36)", lai palielinātu to aizsarglapu skaitu (Apsardzes lapa, piekļūstot tiek izmests izņēmums), kas atrodas problemātiskajā virtuālās atmiņas diapazonā (kas noved pie liela apjoma rezervēšanas virtuālo atmiņu un ierobežojot vienlaicīgu WebAssembly lietojumprogrammu skaitu).

Avots: opennet.ru

Pievieno komentāru