Wasmtime-da kritik zəiflik, WebAssembly proqramları üçün iş vaxtı

Wasmtime 6.0.1, 5.0.1 və 4.0.1 düzəldici yeniləmələri Kritik olaraq qiymətləndirilən zəifliyi (CVE-2023-26489) düzəldir. Zəiflik təcrid olunmuş WebAssembly kodu üçün icazə verilən sərhədlərdən kənar yaddaş sahəsinə məlumatların yazılmasını təşkil etməyə imkan verir ki, bu da təcavüzkar tərəfindən təcrid olunmuş WASI mühitindən kənarda kodunun icrasını təşkil etmək üçün potensial olaraq istifadə edilə bilər.

Wasmtime WASI (WebAssembly System Interface) genişlənmələri ilə WebAssembly proqramlarını normal müstəqil proqramlar kimi işə salmaq üçün işləmə vaxtıdır. Alətlər dəsti Rust dilində yazılmışdır və zəiflik Cranelift kod generatorunda xətti yaddaşın ünvanlanması qaydalarının müəyyən edilməsində məntiqi xətadan qaynaqlanır ki, bu da aparat arxitekturalarından asılı olmayaraq aralıq təsviri x86_64 arxitekturası üçün icra edilə bilən maşın koduna çevirir.

Xüsusilə, WebAssembly-də icazə verilən 35-bit ünvanlar əvəzinə WebAssembly proqramları üçün 33-bit effektiv ünvanlar hesablanmışdır ki, bu da oxumaq və yazma əməliyyatları üçün icazə verilən virtual yaddaşın limitini 34 GB-a keçirmiş, sandbox mühiti parametrləri isə 6 GB üçün qorunma təmin etmişdir. əsas ünvandan. Nəticədə, əsas ünvandan 6-dan 34 GB-a qədər virtual yaddaş diapazonu WebAssembly proqramlarından oxumaq və yazmaq üçün əlçatan oldu. Bu yaddaş digər WebAssembly mühitlərini və ya WebAssembly iş vaxtı komponentlərini yerləşdirə bilər.

Wasmtime versiyasını yeniləmək mümkün deyilsə, hər hansı xətti yaddaşa girişdə məcburi ayrı-ayrı sərhədlərin yoxlanılmasını aktivləşdirmək üçün "Config::static_memory_maximum_size(0)" seçimini göstərmək xətanın qarşısını almaq üçün həll yolları kimi qeyd olunur (nəticələri əhəmiyyətli performansın azalması). Başqa bir seçim problemli virtual yaddaş diapazonunda yerləşən qoruyucu səhifələrin (Guard Page, giriş zamanı istisna atılır) sayını artırmaq üçün "Config::static_memory_guard_size(1 <36)" parametrindən istifadə etməkdir (böyük məbləğin rezervasiyasına gətirib çıxarır) virtual yaddaş və eyni vaxtda WebAssembly proqramlarının sayını məhdudlaşdırır).

Mənbə: opennet.ru

Добавить комментарий