Kriitiline haavatavus Wasmtime'is, WebAssembly rakenduste käitusajas

Wasmtime 6.0.1, 5.0.1 ja 4.0.1 parandavad värskendused parandavad haavatavuse (CVE-2023-26489), mis on hinnatud kriitiliseks. Haavatavus võimaldab korraldada andmete kirjutamist mälupiirkonda väljaspool isoleeritud WebAssembly koodi piire, mida ründaja võib potentsiaalselt kasutada oma koodi täitmise korraldamiseks väljaspool isoleeritud WASI keskkonda.

Wasmtime on käitusaeg WebAssembly rakenduste käitamiseks koos WASI (WebAssembly System Interface) laiendustega tavaliste eraldiseisvate rakendustena. Tööriistakomplekt on kirjutatud Rustis ja haavatavus on põhjustatud loogilisest veast lineaarse mälu adresseerimise reeglite määratlemisel Cranelifti koodigeneraatoris, mis teisendab riistvaraarhitektuuridest sõltumatu vahepealse esituse x86_64 arhitektuuri käivitatavaks masinkoodiks.

Eelkõige arvutati WebAssembly rakenduste jaoks 35-bitised efektiivsed aadressid WebAssemblys lubatud 33-bitiste aadresside asemel, mis nihutas lugemis- ja kirjutamistoimingute jaoks lubatud virtuaalmälu limiidi 34 GB-ni, samas kui liivakastikeskkonna seaded pakuvad kaitset 6 GB-le. baasaadressist. Selle tulemusel oli WebAssembly rakendustest lugemiseks ja kirjutamiseks saadaval virtuaalmälu vahemik 6–34 GB baasaadressist. See mälu võib majutada teisi WebAssembly keskkondi või WebAssembly käitusaegseid komponente.

Kui Wasmtime versiooni pole võimalik värskendada, mainitakse vea blokeerimiseks (tulemusena jõudluse oluline halvenemine) valiku „Config::static_memory_maximum_size(0)” määramine, et võimaldada lineaarsele mälule juurdepääsu kohustuslik eraldi piiride kontroll. Teine võimalus on kasutada seadistust "Config::static_memory_guard_size(1 < 36)", et suurendada probleemses virtuaalmälu vahemikus asuvate valvelehtede arvu (valveleht, avamisel tehakse erand) (see viib suure hulga reserveerimiseni virtuaalmälu ja samaaegsete WebAssembly rakenduste arvu piiramine).

Allikas: opennet.ru

Lisa kommentaar