Kritieke kwetsbaarheid in Wasmtime, runtime voor WebAssembly-applicaties

De corrigerende updates Wasmtime 6.0.1, 5.0.1 en 4.0.1 hebben de kwetsbaarheid (CVE-2023-26489) verholpen, waaraan een kritiek niveau van gevaar was toegewezen. Door het beveiligingslek kunnen gegevens worden geschreven naar een geheugengebied buiten de grenzen van geïsoleerde WebAssembly-code, die mogelijk door een aanvaller kan worden gebruikt om zijn code buiten de geïsoleerde WASI-omgeving uit te voeren.

Wasmtime is een runtime voor het uitvoeren van WebAssembly-applicaties met WASI-extensies (WebAssembly System Interface) als gewone zelfstandige applicaties. De toolkit is geschreven in de Rust-taal en de kwetsbaarheid wordt veroorzaakt door een logische fout bij het definiëren van lineaire geheugenadresseringsregels in de Cranelift-codegenerator, die een tussenrepresentatie, onafhankelijk van hardware-architecturen, vertaalt naar uitvoerbare machinecode voor de x86_64-architectuur.

In het bijzonder werden voor WebAssembly-toepassingen 35-bits effectieve adressen berekend in plaats van de 33-bits adressen die zijn toegestaan ​​in WebAssembly, waardoor de limiet van het virtuele geheugen dat is toegestaan ​​voor lees- en schrijfbewerkingen werd verschoven naar 34 GB, terwijl de sandbox-omgevingsinstellingen bescherming bieden voor 6 GB vanaf het basisadres. Als gevolg hiervan was het virtuele geheugenbereik van 6 tot 34 GB vanaf het basisadres beschikbaar voor lezen en schrijven vanuit WebAssembly-applicaties. Dit geheugen kan andere WebAssembly-omgevingen of WebAssembly-runtimecomponenten hosten.

Als het niet mogelijk is om de Wasmtime-versie bij te werken, is een oplossing voor het blokkeren van de fout het specificeren van de optie "Config::static_memory_maximum_size(0)" om een ​​afzonderlijke grenscontrole in te schakelen op alle lineaire geheugentoegangen (wat resulteert in een aanzienlijke prestatievermindering) . Een andere optie is om de instelling “Config::static_memory_guard_size(1 < 36)” te gebruiken om het aantal beveiligingspagina’s (een uitzondering die wordt gegenereerd bij toegang) in het problematische virtuele geheugenbereik te vergroten (wat resulteert in het reserveren van een grote hoeveelheid virtueel geheugen en beperking van het aantal gelijktijdig actieve WebAssembly-applicaties).

Bron: opennet.ru

Voeg een reactie