CVE-2022-24791
Açıklama
Wasmtime, Cranelift kullanan WebAssembly için bağımsız bir JIT tarzı çalışma zamanıdır. Hem externrefs kullanan Wasm çalıştırıldığında hem de Wasmtime'da epoch interruption etkinleştirildiğinde bir serbest bırakıldıktan sonra kullanım (use after free) zafiyeti bulunmaktadır. Epoch interruption özelliğini açıkça etkinleştirmediyseniz (varsayılan olarak kapalıdır), bu durumdan etkilenmezsiniz. Wasm referans türleri önerisini açıkça devre dışı bıraktıysanız (varsayılan olarak etkindir), yine etkilenmezsiniz. Serbest bırakıldıktan sonra kullanım durumu, soğuk bloklar (cold blocks) içinde güvenli noktalar (safepoints) olduğunda Cranelift'in yığın haritalarını (stack maps) oluşturamaması nedeniyle oluşur. Soğuk bloklar, epoch interruption etkinleştirildiğinde ortaya çıkar. Soğuk bloklar derlenen fonksiyonların sonunda oluşturulur ve blokların tanımlanma sırasına göre değil, oluşturulma sırasına göre dizilimini değiştirir. Bu yeniden sıralama, Cranelift'in yığın haritalarını blok oluşturma sırası yerine blok tanım sırasıyla oluşturmayı beklemesi nedeniyle bazı yığın haritalarının yanlışlıkla atlanmasına neden olmuştur. Wasmtime nihayetinde çöp toplama (garbage collection) işlemini gerçekleştirdiğinde, eksik yığın haritaları nedeniyle yığındaki canlı referansları bulamaz, bunların referanssız çöpler olduğunu düşünür ve dolayısıyla onları geri kazanır. Toplama işlemi sona erdikten sonra, Wasm kodu çok erken geri kazanılan bu referansları kullanabilir, bu da bir serbest bırakıldıktan sonra kullanım durumudur. Zafiyeti gideren yamalar 0.34.2 ve 0.35.2 sürümlerinde yayınlanmıştır. Tüm Wasmtime kullanıcılarının bu yamalanmış sürümlere yükseltme yapmaları önerilir. Şu anda yükseltme yapmak sizin için bir seçenek değilse, şu yöntemlerle zafiyetten kaçınabilirsiniz: ya Wasm referans türleri önerisini devre dışı bırakarak `config.wasm_reference_types(false);` ya da daha önce etkinleştirdiyseniz epoch interruption özelliğini devre dışı bırakarak `config.epoch_interruption(false)`.
Nasıl düzeltilir
- bytecodealliance wasmtime0.34.2, 0.35.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| bytecodealliance wasmtime | 0.34.0 ≤ v < 0.34.2, 0.35.0 ≤ v < 0.35.2 | 0.34.2, 0.35.2 |
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.
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.