CVE-2021-39218

Orta

Açıklama

Wasmtime, WebAssembly ve WASI için açık kaynaklı bir çalışma zamanıdır. Wasmtime'ın 0.26.0 sürümünden başlayarak 0.30.0 sürümü öncesine kadar olan versiyonları, bir bellek güvensizliği (memory unsoundness) zafiyetinden etkilenmektedir. Wasmtime'da `externref` kullanan Wasm çalıştırıldığında geçersiz serbest bırakma (invalid free) ile sınır dışı okuma ve yazma hatası meydana gelmekteydi. Bu hatayı tetiklemek için; Wasmtime'ın `externref` kullanan bir Wasm çalıştırması, ana makinenin (host) null olmayan `externref`ler oluşturması, Wasmtime'ın bir çöp toplama (garbage collection - GC) işlemi gerçekleştirmesi, yığında (stack) hiçbir canlı referansın bulunmadığı bir GC güvenli noktasındaki (safepoint) bir Wasm çerçevesinin olması ve bu çerçevenin fonksiyonunda daha önce canlı referansların bulunduğu bir güvenli noktanın yer alması gerekmektedir. Bu senaryoda Wasmtime, boş güvenli nokta yerine fonksiyonun başındaki güvenli noktaya ait GC yığın haritasını yanlışlıkla kullanmaktadır. Bu durum, Wasmtime'ın rastgele yığın yuvalarını GC için köklendirilmesi gereken `externref`ler olarak değerlendirmesine yol açar. Bir *sonraki* GC işleminde, bu sahte `externref`lere hiçbir şeyin referans vermediği belirlenir (çünkü gerçekte `externref` olmadıkları için hiçbir şey onlara referans veremez) ve ardından Wasmtime bunları bellekten tahliye ederek üzerlerinde `<ExternRef as Drop>::drop` işlemini çalıştırır. Bu durum, mutlaka yığında (heap) olmayabilecek (ve yığında olsa bile o anda serbest bırakılmaması gereken) belleğin serbest bırakılmasına, ayrıca potansiyel sınır dışı okuma ve yazmalara neden olur. `externref` desteği (referans türleri önerisi aracılığıyla) varsayılan olarak etkin olsa da, ana makine kodunuzda null olmayan `externref`ler oluşturmadığınız veya açıkça GC tetiklemediğiniz sürece bu hatadan etkilenmezsiniz. `externref` kullanımı şu an oldukça nadir olduğu için bu hatanın etkili etkisinin nispeten küçük olduğuna inanmaktayız. Bu hata düzeltilmiştir ve kullanıcılar Wasmtime 0.30.0 sürümüne yükseltme yapmalıdır. Şu anda Wasmtime'ı yükseltemiyorsanız, `wasmtime::Config::wasm_reference_types` parametresine `false` değerini geçirerek referans türleri önerisini devre dışı bırakıp bu hatadan kaçınabilirsiniz.

ÖnemOrta
CVSS6.3
İstismar olasılığı—
ÜrünBytecodealliance Wasmtime
Yayın17 Eyl 2021
İlk görülme17 Eyl 2021

Nasıl düzeltilir

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
bytecodealliance wasmtime0.26.0 ≤ v < 0.30.00.30.0
fedoraproject fedora34, 35—

Sürümünüzü kontrol edin

Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.

Intelligence 360 paketinde

Attack Surface Management

Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.

CVE-2021-39218 · Bytecodealliance Wasmtime · Dark Radar