CVE-2021-39219
Açıklama
Wasmtime, WebAssembly ve WASI için açık kaynaklı bir çalışma zamanıdır. Wasmtime'ın 0.30.0 sürümünden önceki sürümleri bir tür karışıklığı güvenlik açığından etkilenmektedir. Bir Rust kütüphanesi olarak `wasmtime` crate'i hangi işlevlerin güvenli, hangilerinin `unsafe` olduğunu açıkça belirtir ve tüketiciler hiçbir zaman `unsafe` kullanmadığı sürece Wasmtime'ı gömülü olarak kullanımlarında bellek güvenliği sorunlarının oluşmasının mümkün olmamasını garanti eder. `Linker::func_*` API'lerinin güvenli API'sinde bir sorun keşfedilmiştir. Bu API'ler, bir `Engine`'in `Linker` oluşturmak için kullanıldığı ve ardından farklı bir `Engine`'in bir `Store` oluşturmak için kullanıldığı ve sonra `Linker`'ın bu `Store` içine bir modül örneklemek için kullanıldığı durumlarda daha önce sağlam değildi. İşlevlerin `Engine`'ler arası kullanımı Wasmtime'da desteklenmez ve bu durum işlev işaretçilerinde tür karışıklığına yol açarak bir işlevin yanlış türle güvenli bir şekilde çağrılabilmesine neden olabilir. Bu hatanın tetiklenmesi, bir gömülü kullanımda en az iki `Engine` değerinin kullanılmasını ve ayrıca bir `Linker` ile iki farklı değerin kullanılmasını (biri `Linker`'ın oluşturulma zamanında, diğeri `Linker` ile bir modül örneklenirken) gerektirir. Bir `Engine`'in genel olarak paylaşılan bir kaynak olması amaçlandığından, bir gömülü kullanımda birden fazla `Engine` kullanımının nispeten nadir olduğu beklenmektedir, dolayısıyla bu sorunun etkisinin nispeten küçük olduğu düşünülmektedir. Uygulanan düzeltme, bu davranışın sessizce izin verilmesi yerine Rust'ta `panic!()` olarak değiştirilmesidir. Bir `Linker` ile farklı `Engine` örneklerinin kullanılması, `wasmtime`'ın çalışma zamanında yakaladığı bir programcı hatasıdır. Bu hata yamalanmıştır ve kullanıcılar Wasmtime'ın 0.30.0 sürümüne yükseltme yapmalıdır. Wasmtime'ı yükseltemiyorsanız ve gömülü kullanımınızda birden fazla `Engine` kullanıyorsanız, mümkünse tüm program için yalnızca bir `Engine` kullanmanız önerilir. Bir `Engine`, tüm bir sürecin ömrü boyunca yalnızca bir tanesinin bulunması uygun olan, genel olarak paylaşılan bir kaynak olarak tasarlanmıştır. Birden fazla `Engine` kullanılması gerekiyorsa, `Linker`'ın yalnızca bir `Engine` ile kullanıldığından emin olmak için kod denetlenmelidir.
Nasıl düzeltilir
- bytecodealliance wasmtime0.30.0 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| bytecodealliance wasmtime | v < 0.30.0 | 0.30.0 |
| fedoraproject fedora | 34, 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.
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.