Kritična ranjivost u Wasmtimeu, vremenu izvođenja za WebAssembly aplikacije

Korektivna ažuriranja Wasmtime 6.0.1, 5.0.1 i 4.0.1 popravljaju ranjivost (CVE-2023-26489), koja je ocijenjena kao kritična. Ranjivost dopušta organiziranje pisanja podataka u memorijsko područje izvan granica dopuštenih za izolirani WebAssembly kod, što potencijalno može koristiti napadač za organiziranje izvršenja svog koda izvan izoliranog WASI okruženja.

Wasmtime je runtime za pokretanje WebAssembly aplikacija s WASI (WebAssembly System Interface) ekstenzijama kao normalnim samostalnim aplikacijama. Skup alata je napisan u Rustu, a ranjivost je uzrokovana logičkom pogreškom u definiciji pravila linearnog adresiranja memorije u Cranelift generatoru koda, koji prevodi međureprezentaciju neovisnu o hardverskim arhitekturama u izvršni strojni kod za x86_64 arhitekturu.

Konkretno, 35-bitne efektivne adrese izračunate su za aplikacije WebAssembly umjesto 33-bitnih adresa dopuštenih u WebAssemblyju, što je pomaknulo ograničenje virtualne memorije dopuštene za operacije čitanja i pisanja na 34 GB, dok postavke okruženja sandboxa pružaju zaštitu za 6 GB s bazne adrese. Kao rezultat toga, raspon virtualne memorije od 6 do 34 GB s osnovne adrese bio je dostupan za čitanje i pisanje iz WebAssembly aplikacija. Ova memorija može ugostiti druga WebAssembly okruženja ili WebAssembly komponente vremena izvođenja.

Ako nije moguće ažurirati verziju Wasmtimea, navođenje opcije "Config::static_memory_maximum_size(0)" za omogućavanje obvezne zasebne provjere granica za bilo koji pristup linearnoj memoriji spominje se kao zaobilazno rješenje za blokiranje pogreške (rezultira značajnim smanjenjem performansi). Druga je mogućnost koristiti postavku "Config::static_memory_guard_size(1 < 36)" za povećanje broja zaštitnih stranica (Guard Page, iznimka se izbacuje kada se pristupa) koje se nalaze u problematičnom rasponu virtualne memorije (vodi do rezerviranja velike količine virtualne memorije i ograničavanje broja istodobnih WebAssembly aplikacija).

Izvor: opennet.ru

Dodajte komentar