CVE-2024-47813

Düşük

Açıklama

Wasmtime, WebAssembly için açık kaynaklı bir çalışma zamanıdır. Belirli eşzamanlı olay sıralamaları altında, bir `wasmtime::Engine`'in dahili tip kayıt defteri, bir yarış durumu (race condition) nedeniyle çift kayıttan çıkarma hatalarına karşı savunmasızdı; bu durum paniklere ve potansiyel olarak tip kayıt defterinin bozulmasına yol açıyordu. Bu kayıt defteri bozulması, ek ve özel bir eşzamanlı olaylar dizisini takiben, WebAssembly'nin kontrol akışı bütünlüğünün (CFI) ve tip güvenliğinin ihlal edilmesine neden olabilirdi. `wasmtime::Engine` yapısını birden fazla iş parçacığı üzerinden kullanmayan kullanıcılar etkilenmemektedir. Zaman içinde iş parçacıkları arasında yalnızca yeni modüller oluşturan kullanıcılar ayrıca etkilenmemektedir. Bu hatanın yeniden üretilmesi, tüm tiplerin aynı `wasmtime::Engine` ile ilişkili olduğu durumda, birden fazla iş parçacığında eşzamanlı olarak birden fazla tip örneği (`wasmtime::FuncType` veya `wasmtime::ArrayType` gibi) oluşturulmasını ve silinmesini gerektirir. **Wasm konukları bu hatayı tetikleyemez.** Etkilenen Wasmtime tip ilgili API'lerin listesi için aşağıdaki "Referanslar" bölümüne bakınız. Wasmtime, bir `wasmtime::Engine` içerisinde tiplerin dahili bir kayıt defterini tutar ve bir motor iş parçacıkları arasında paylaşılabilir. Tipler; bir `wasmtime::Module` oluşturularak, `wasmtime::FuncType` oluşturularak veya ana makinenin (host) bir fonksiyon oluşturduğu diğer birçok API aracılığıyla oluşturulabilir ve referans verilebilir (aşağıdaki "Referanslar" kısmına bakınız). Bu durumların her biri, örneğin WebAssembly'nin `call_indirect` fonksiyonundaki tip kontrollerini uygulamak için kullanılan tip bilgilerini tekilleştirmek ve tip indekslerini yönetmek amacıyla bir motorla etkileşime girer. Bu hata, dahili tip kayıt defterinin bir assert işlemini tetikleyecek şekilde bozulabileceği veya geçersiz durum içerebileceği yönetim sürecindeki bir yarış durumudur. Wasmtime'ın bir tipin dahili temsili, bireysel tiplerin (örneğin, her ana makine fonksiyonu için bir tane) kaç kez kullanıldığının kayıt sayısını tutmasını sağlar. Tipler ayrıca, okuma-yazma kilidi arkasında arama/tekilleştirme bilgileri gibi bir motor içi duruma sahiptir. Buradaki yarış durumu, bir iş parçacığının atomik olarak bir tip girişinin kayıt sayısını azalttığı, sıfır kayıt gözlemlediği ve ardından bu girişi kayıttan çıkarmak için bir kilit aldığı bir kontrol zamanı ile kullanım zamanı (TOCTOU) hatasıdır. Ancak, ilk iş parçacığının sıfır kayıt sayısını gözlemlemesi ile kilidi alması arasındaki sürede, başka bir iş parçacığı şu olaylar dizisini gerçekleştirebilir: Tipin başka bir kopyasını yeniden kaydetmek (bu işlem aynı girişe tekilleştirilir, onu yeniden canlandırır ve kayıt sayısını artırır); ardından tipi düşürmek ve kayıt sayısını azaltmak; kayıt sayısının artık sıfır olduğunu gözlemlemek; tip kayıt defteri kilidini almak ve son olarak tipi kayıttan çıkarmak. Artık orijinal iş parçacığı nihayet kilidi aldığında ve girişi kayıttan çıkardığında, bu girişin ikinci kez kayıttan çıkarılmış olur. Bu hata başlangıçta Wasmtime 19'un WebAssembly GC önerisi geliştirmeleri sırasında ortaya çıkmıştır. Bununla birlikte, bu hata GC önerisini kullanmayan kullanıcıları da etkiler ve GC önerisi devre dışı bırakıldığında bile varsayılan yapılandırmasındaki Wasmtime'ı etkiler. 19.0.0 ve sonrası sürümleri kullanan Wasmtime kullanıcılarının tamamı bu sorundan etkilenmektedir. Bu hata için düzeltme içeren aşağıdaki Wasmtime sürümlerini yayınladık: * 21.0.2 * 22.0.1 * 23.0.3 * 24.0.1 * 25.0.2. Uygulamanız birden fazla iş parçacığında eşzamanlı olarak Wasmtime tipleri oluşturuyor ve siliyorsa, bilinen bir geçici çözüm yoktur. Kullanıcıların yamalanmış bir sürüme yükseltmeleri önerilir.

ÖnemDüşük
CVSS2.9
İstismar olasılığı—
ÜrünBytecodealliance Wasmtime
Yayın9 Eki 2024
İlk görülme9 Eki 2024
Zayıflık türüCWE-367CWE-367

Nasıl düzeltilir

Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
bytecodealliance wasmtime19.0.0, 19.0.1, 19.0.2, 20.0.0, 20.0.1, 20.0.2, 21.0.0, 21.0.1, 22.0.0, 23.0.0, 23.0.1, 23.0.2, 24.0.0, 25.0.0, 25.0.1—
wasmtimePyPIv ≤ 19.0.0—

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-2024-47813 · Bytecodealliance Wasmtime · Dark Radar