WebAssembly uygulamaları için çalışma zamanı olan Wasmtime'da kritik güvenlik açığı

Wasmtime 6.0.1, 5.0.1 ve 4.0.1 düzeltici güncellemeleri, kritik tehlike düzeyi olarak atanan güvenlik açığını (CVE-2023-26489) düzeltti. Güvenlik açığı, verilerin yalıtılmış WebAssembly kodu için izin verilen sınırların dışındaki bir bellek alanına yazılmasına olanak tanır ve bu, bir saldırganın kodunu yalıtılmış WASI ortamı dışında yürütmek için potansiyel olarak kullanılabilir.

Wasmtime, WebAssembly uygulamalarını WASI (WebAssembly Sistem Arayüzü) uzantılarıyla normal bağımsız uygulamalar olarak çalıştırmak için bir çalışma zamanıdır. Araç seti Rust dilinde yazılmıştır ve güvenlik açığı, donanım mimarilerinden bağımsız bir ara temsili x86_64 mimarisi için yürütülebilir makine koduna çeviren Cranelift kod oluşturucusundaki doğrusal bellek adresleme kurallarının tanımlanmasındaki mantıksal bir hatadan kaynaklanmaktadır.

Özellikle WebAssembly uygulamaları için WebAssembly'de izin verilen 35 bit adresler yerine 33 bit etkin adresler hesaplanarak okuma ve yazma işlemleri için izin verilen sanal bellek sınırı 34 GB'a kaydırılırken, sandbox ortam ayarları da koruma sağlıyor. Temel adresten 6 GB. Sonuç olarak, temel adresten itibaren 6 ila 34 GB arasındaki sanal bellek aralığı, WebAssembly uygulamalarından okuma ve yazma için kullanılabilir hale geldi. Bu bellek, diğer WebAssembly ortamlarını veya WebAssembly çalışma zamanı bileşenlerini barındırabilir.

Wasmtime sürümünü güncellemek mümkün değilse, hatayı engellemeye yönelik bir geçici çözüm, tüm doğrusal bellek erişimlerinde ayrı bir sınır kontrolünü etkinleştirmek için "Config::static_memory_maximum_size(0)" seçeneğini belirtmektir (önemli bir performans düşüşüne neden olur) . Diğer bir seçenek ise sorunlu sanal bellek aralığına yerleştirilen Koruma Sayfalarının (erişildiğinde atılan bir istisna) sayısını artırmak için "Config::static_memory_guard_size(1 < 36)" ayarını kullanmaktır (bu, büyük miktarda sanal bellek ayrılmasıyla sonuçlanır ve WebAssembly uygulamalarını aynı anda çalıştıran sayının sınırlandırılması).

Kaynak: opennet.ru

Yorum ekle