Kritikus sérülékenység a Wasmtime-ben, a WebAssembly alkalmazások futtatókörnyezetében

A Wasmtime 6.0.1, 5.0.1 és 4.0.1 javító frissítései javították a sérülékenységet (CVE-2023-26489), amelyhez kritikus veszélyszintet rendeltek. A biztonsági rés lehetővé teszi adatok írását az elszigetelt WebAssembly kód megengedett határain kívül eső memóriaterületre, amelyet a támadó felhasználhat kódjának az elszigetelt WASI-környezeten kívüli végrehajtására.

A Wasmtime egy futási környezet a WebAssembly alkalmazások futtatásához WASI (WebAssembly System Interface) kiterjesztésekkel, mint szokásos önálló alkalmazások. Az eszközkészlet Rust nyelven íródott, a sérülékenységet pedig egy logikai hiba okozza a lineáris memóriacímzési szabályok meghatározásakor a Cranelift kódgenerátorban, amely a hardverarchitektúráktól független köztes reprezentációt az x86_64 architektúra futtatható gépi kódjává fordítja.

Különösen a WebAssembly alkalmazások esetében 35 bites effektív címeket számítottak ki a WebAssemblyben engedélyezett 33 bites címek helyett, ami az olvasási és írási műveletekhez engedélyezett virtuális memória határát 34 GB-ra tolja el, míg a sandbox környezet beállításai védelmet nyújtanak a 6 GB az alapcímtől. Ennek eredményeként az alapcímtől számított 6 és 34 GB közötti virtuális memória tartomány elérhetővé vált a WebAssembly alkalmazásokból való olvasáshoz és íráshoz. Ez a memória más WebAssembly környezeteket vagy WebAssembly futásidejű összetevőket is üzemeltethet.

Ha nem lehetséges a Wasmtime verzió frissítése, a hiba blokkolásának megoldása a "Config::static_memory_maximum_size(0)" beállítás megadása, amely lehetővé teszi a külön határellenőrzést az összes lineáris memória-elérésnél (ami jelentős teljesítménycsökkenést eredményez). . Egy másik lehetőség a „Config::static_memory_guard_size(1 < 36)” beállítás használata a problémás virtuális memóriatartományban elhelyezett őrző oldalak számának növelésére (kivétel a hozzáféréskor) (ami nagy mennyiségű virtuális memória lefoglalását eredményezi, és korlátozza az egyidejűleg futó WebAssembly alkalmazások számát).

Forrás: opennet.ru

Hozzászólás