Wasmtime versioonides 6.0.1, 5.0.1 ja 4.0.1 on parandatud turvavigastus (CVE-2023-26489), mille ohtlikkuse taset peetakse kriitiliseks. See turvavigastus vĂ”imaldab andmete kirjutamist mĂ€lupiirkonda, mis ĂŒletab WebAssembly koodi eraldatud ala, mida rĂŒndaja vĂ”iks potentsiaalselt kasutada oma koodi tĂ€itmiseks vĂ€ljaspool WASI eraldatud keskkonda.
Wasmtime on WebAssembly rakenduste tÀitmise aeglane kÀitaja, millel on WASI (WebAssembly System Interface) laiendused, nagu tavalised isoleeritud rakendused. Tööriistakogum on kirjutatud Rust keeles ja turvavigastus on pÔhjustatud loogilisest veast mÀluaadressimise reeglite mÀÀratlemisel Cranelift koodi genereerijas, mis tÔlgendab riistvarast sÔltumatut vaheesitust masinkoodiks x86_64 arhitektuurile.
Konkreetsemalt arvutati WebAssembly rakenduste jaoks 35-bitised efektiivsed aadressid, selle asemel et kasutada WebAssembly lubatud 33-bitiseid aadresse, mis nihutas lugemis- ja kirjutamistoimingute lubatud ala 34 GB-ni, samas kui liivakasti keskkonna seaded pakuvad kaitset 6 GB alates baas-aadressist. SeelÀbi sai vahemik virtuaalsest mÀlust alates 6 GB kuni 34 GB baas-aadressist olema kergesti kÀtte saadav WebAssembly rakenduste lugemiseks ja kirjutamiseks. Selle mÀlu sees vÔivad asuda muud WebAssembly keskkonnad vÔi WebAssembly aeglase tÀitmise komponendid.
Kui Wasmtime'i versiooni uuendamine pole vÔimalik, siis turvavea blokeerimise vÔimalusteks mainitakse valiku "Config::static_memory_maximum_size(0)" seadistamist, et rakendada kohustuslikku mÀlupiiride kontrolli igasuguste juurdepÀÀsude korral (see toob endaga kaasa mÀrkimisvÀÀrse jÔudluse vÀhenemise). Teine valik on kasutada seadistust "Config::static_memory_guard_size(1 < 36)" mÀluhaldusteenuste (Guard Page, mille juurdepÀÀsu korral tekib erand) arvu suurendamiseks probleemses virtuaalse mÀlu vahemikus (see toob endaga kaasa suure hulga virtuaalse mÀluruumi reserveerimise ja WebAssembly rakenduste samaaegse tÀitmise arvu piirangu).
Allikas: opennet.ru
