Kritická zraniteľnosť vo Wasmtime, runtime pre aplikácie WebAssembly

Opravné aktualizácie Wasmtime 6.0.1, 5.0.1 a 4.0.1 opravili zraniteľnosť (CVE-2023-26489), ktorej bola priradená kritická úroveň nebezpečenstva. Zraniteľnosť umožňuje zapisovanie údajov do pamäťovej oblasti mimo hraníc povolených pre izolovaný kód WebAssembly, ktorý by mohol útočník potenciálne použiť na spustenie svojho kódu mimo izolovaného prostredia WASI.

Wasmtime je runtime na spúšťanie aplikácií WebAssembly s rozšíreniami WASI (WebAssembly System Interface) ako bežné samostatné aplikácie. Sada nástrojov je napísaná v jazyku Rust a zraniteľnosť je spôsobená logickou chybou pri definovaní pravidiel lineárneho adresovania pamäte v generátore kódu Cranelift, ktorý prekladá prechodnú reprezentáciu nezávislú od hardvérových architektúr do spustiteľného strojového kódu pre architektúru x86_64.

Najmä pre aplikácie WebAssembly sa počítali 35-bitové efektívne adresy namiesto 33-bitových adries povolených vo WebAssembly, čo posunulo limit virtuálnej pamäte povolenej pre operácie čítania a zápisu na 34 GB, zatiaľ čo nastavenia prostredia sandbox poskytujú ochranu pre 6 GB zo základnej adresy. V dôsledku toho bol rozsah virtuálnej pamäte od 6 do 34 GB zo základnej adresy dostupný na čítanie a zápis z aplikácií WebAssembly. Táto pamäť môže hostiť ďalšie prostredia WebAssembly alebo komponenty runtime WebAssembly.

Ak nie je možné aktualizovať verziu Wasmtime, riešením na zablokovanie chyby je zadať možnosť „Config::static_memory_maximum_size(0)“, ktorá umožní samostatnú kontrolu hraníc pre všetky prístupy k lineárnej pamäti (čo má za následok výrazné zníženie výkonu) . Ďalšou možnosťou je použiť nastavenie „Config::static_memory_guard_size(1 < 36)“ na zvýšenie počtu ochranných stránok (výnimka vyvolaná pri prístupe) umiestnených v problematickom rozsahu virtuálnej pamäte (čo vedie k vyhradeniu veľkého množstva virtuálnej pamäte a obmedzenie počtu súčasne spustených aplikácií WebAssembly).

Zdroj: opennet.ru

Pridať komentár