Mikilvægt varnarleysi í Wasmtime, keyrslutími fyrir WebAssembly forrit

Leiðréttingaruppfærslurnar Wasmtime 6.0.1, 5.0.1 og 4.0.1 lagfærðu varnarleysið (CVE-2023-26489), sem var úthlutað mikilvægu hættustigi. Varnarleysið gerir kleift að skrifa gögn á minnissvæði utan þeirra marka sem leyfilegt er fyrir einangraðan WebAssembly kóða, sem gæti hugsanlega verið notað af árásarmanni til að keyra kóðann sinn utan einangraða WASI umhverfisins.

Wasmtime er keyrslutími til að keyra WebAssembly forrit með WASI (WebAssembly System Interface) viðbótum sem venjuleg sjálfstæð forrit. Verkfærakistan er skrifuð á Rust tungumálinu og varnarleysið stafar af rökrænni villu við að skilgreina línulegar minnismiðlunarreglur í Cranelift kóðaraflanum, sem þýðir milliframsetningu óháð vélbúnaðararkitektúr yfir í keyranlegan vélkóða fyrir x86_64 arkitektúrinn.

Sérstaklega, fyrir WebAssembly forrit, voru 35 bita virkt vistföng reiknuð í stað 33 bita vistföngin sem leyfð eru í WebAssembly, sem færði mörk sýndarminnis sem leyfð er fyrir les- og skrifaðgerðir í 34 GB, en stillingar sandkassaumhverfisins veita vernd fyrir 6 GB frá grunn heimilisfanginu. Fyrir vikið var sýndarminni á bilinu 6 til 34 GB frá grunnvistfangi tiltækt til að lesa og skrifa úr WebAssembly forritum. Þetta minni getur hýst önnur WebAssembly umhverfi eða WebAssembly keyrslutímahluti.

Ef það er ekki hægt að uppfæra Wasmtime útgáfuna er lausn til að loka fyrir villuna að tilgreina "Config::static_memory_maximum_size(0)" valmöguleikann til að virkja sérstakt markathugun á öllum línulegum minnisaðgangi (sem leiðir til verulegrar frammistöðu refsingar) . Annar valkostur er að nota „Config::static_memory_guard_size(1 < 36)“ stillinguna til að fjölga verndarsíðum (undantekning sem er varpað á þegar farið er í þær) sem eru settar á erfiða sýndarminnissviðið (sem leiðir til þess að geymt er mikið magn af sýndarminni og takmarka fjöldann sem keyrir WebAssembly forrit samtímis).

Heimild: opennet.ru

Bæta við athugasemd