İçeriğe atla
Noroxi
CVE-2024-47813· NVD / CVE Programı· CNA GitHub_M

Wasmtime race condition could lead to WebAssembly control-flow integrity and type safety violations

Wasmtime is an open source runtime for WebAssembly. Under certain concurrent event orderings, a `wasmtime::Engine`'s internal type registry was susceptible to double-unregistration bugs due to a race condition, leading to panics and potentially type registry corruption. That registry corruption could, following an additional and particular sequence of concurrent events, lead to violations of WebAssembly's control-flow integrity (CFI) and type safety. Users that do not use `wasmtime::Engine` across multiple threads are not affected. Users that only create new modules across threads over time are additionally not affected. Reproducing this bug requires creating and dropping multiple type instances (such as `wasmtime::FuncType` or `wasmtime::ArrayType`) concurrently on multiple threads, where all types are associated with the same `wasmtime::Engine`. **Wasm guests cannot trigger this bug.** See the "References" section below for a list of Wasmtime types-related APIs that are affected. Wasmtime maintains an internal registry of types within a `wasmtime::Engine` and an engine is shareable across threads. Types can be created and referenced through creation of a `wasmtime::Module`, creation of `wasmtime::FuncType`, or a number of other APIs where the host creates a function (see "References" below). Each of these cases interacts with an engine to deduplicate type information and manage type indices that are used to implement type checks in WebAssembly's `call_indirect` function, for example. This bug is a race condition in this management where the internal type registry could be corrupted to trigger an assert or contain invalid state. Wasmtime's internal representation of a type has individual types (e.g. one-per-host-function) maintain a registration count of how many time it's been used. Types additionally have state within an engine behind a read-write lock such as lookup/deduplication information. The race here is a time-of-check versus time-of-use (TOCTOU) bug where one thread atomically decrements a type entry's registration count, observes zero registrations, and then acquires a lock in order to unregister that entry. However, between when this first thread observed the zero-registration count and when it acquires that lock, another thread could perform the following sequence of events: re-register another copy of the type, which deduplicates to that same entry, resurrecting it and incrementing its registration count; then drop the type and decrement its registration count; observe that the registration count is now zero; acquire the type registry lock; and finally unregister the type. Now, when the original thread finally acquires the lock and unregisters the entry, it is the second time this entry has been unregistered. This bug was originally introduced in Wasmtime 19's development of the WebAssembly GC proposal. This bug affects users who are not using the GC proposal, however, and affects Wasmtime in its default configuration even when the GC proposal is disabled. Wasmtime users using 19.0.0 and after are all affected by this issue. We have released the following Wasmtime versions, all of which have a fix for this bug: * 21.0.2 * 22.0.1 * 23.0.3 * 24.0.1 * 25.0.2. If your application creates and drops Wasmtime types on multiple threads concurrently, there are no known workarounds. Users are encouraged to upgrade to a patched release.

DüşükCVSS 2.9 · v3.1—İstismar yok Düzeltme var
Yayın
9 Eki 2024
Güncelleme
17 Haz 2026
EPSS
%0,2 · 4. yüzdelik
Bu CVE’yi takip et

Takip etmek için giriş yap · Takip ettiğin kayıt KEV’e girer, istismarı çıkar ya da güncellenirse bildirim alırsın.

Rapor araçları

JSON

Aksiyon skoru

11

İzleyin

Şimdilik düşük öncelik.

CVSS
11 / 40 · 2.9 / 10
CISA KEV
0 / 30 · Listede değil
EPSS
0 / 30 · %0,2

CISA SSVC kararı

Sömürü
yok
Otomatikleştirilebilir
hayır
Teknik etki
kısmi

Vulnrichment: CISA'nın karar ağacı girdileri.

CNA ile NVD puanı

NVD
—
CNA · GitHub_M
2,9
NVD henüz kendi puanını vermedi; gösterilen puan CNA’nın.

Kaydı açan otoritenin puanı ile NVD’nin bağımsız puanı. İki puan arasındaki fark ciddiyetin tartışmalı olduğunu gösterir.

Etkilenen sistemler

ÜreticiÜrün
bytecodealliancewasmtime

Etkilenen sürümler

NVD sürüm aralıkları (katalogdaki ürünler için). Stack’ine sürümle eklersen eşleşme bunlarla yapılır.

  • bytecodealliance wasmtime19.0.0
  • bytecodealliance wasmtime19.0.1
  • bytecodealliance wasmtime19.0.2
  • bytecodealliance wasmtime20.0.0
  • bytecodealliance wasmtime20.0.1
  • bytecodealliance wasmtime20.0.2
  • bytecodealliance wasmtime21.0.0
  • bytecodealliance wasmtime21.0.1
  • bytecodealliance wasmtime22.0.0
  • bytecodealliance wasmtime23.0.0
  • bytecodealliance wasmtime23.0.1
  • bytecodealliance wasmtime23.0.2
  • bytecodealliance wasmtime24.0.0
  • bytecodealliance wasmtime25.0.0
  • bytecodealliance wasmtime25.0.1

Üreticinin bildirdiği sürümler

Kaydı açan otorite (GitHub_M) tarafından bildirilen etkilenen sürüm aralıkları. NVD'nin CPE analizinden bağımsızdır ve genellikle ondan önce gelir.

  • bytecodealliance wasmtime

    • >= 19.0.0, < 21.0.2, >= 22.0.0, < 22.0.1, >= 23.0.0, < 23.0.3, >= 24.0.0, < 24.0.1, >= 25.0.0, < 25.0.2etkilenir

Paket düzeyi etkilenme

OSV ve GitHub Advisory verisi: ekosistem, paket ve aralık. SBOM eşleşmesi bu tabloyu kullanır.

EkosistemPaketEtkilenen aralıkDüzeltme
crates.iowasmtime19.0.0 itibarıyla · 21.0.2 öncesi21.0.2
crates.iowasmtime22.0.0 itibarıyla · 22.0.1 öncesi22.0.1
crates.iowasmtime23.0.0 itibarıyla · 23.0.3 öncesi23.0.3
crates.iowasmtime24.0.0 itibarıyla · 24.0.1 öncesi24.0.1
crates.iowasmtime25.0.0 itibarıyla · 25.0.2 öncesi25.0.2
Debian:13rust-wasmtime21.0.2+dfsg-1 öncesi21.0.2+dfsg-1
PyPIwasmtime21.0.0 dahil öncesi—
PyPIwasmtime21.0.1 dahil öncesi—
PyPIwasmtime22.0.0 dahil öncesi—
PyPIwasmtime23.0.0 dahil öncesi—
PyPIwasmtime19.0.0 dahil öncesi—
PyPIwasmtime23.0.2 dahil öncesi—
PyPIwasmtime24.0.0 dahil öncesi—
PyPIwasmtime25.0.0 dahil öncesi—
PyPIwasmtime25.0.1 dahil öncesi—
PyPIwasmtime23.0.1 dahil öncesi—
PyPIwasmtime19.0.1 dahil öncesi—
PyPIwasmtime19.0.2 dahil öncesi—
PyPIwasmtime20.0.0 dahil öncesi—
PyPIwasmtime20.0.1 dahil öncesi—
PyPIwasmtime20.0.2 dahil öncesi—

Aynı birincil ürünün en yüksek skorlu diğer kayıtları.

  • CVE-2022-39394wasmtime_trap_code C API function has out of bounds write vulnerability
    39İzleyin
  • CVE-2022-24791Use after free in Wasmtime
    39İzleyin
  • CVE-2026-34987Wasmtime with Winch compiler backend on aarch64 may allow a sandbox-escaping memory access
    36İzleyin
  • CVE-2026-34971Wasmtime miscompiled guest heap access enables sandbox escape on aarch64 Cranelift
    36İzleyin
  • CVE-2023-30624Wasmtime has Undefined Behavior in Rust runtime functions
    35İzleyin
  • CVE-2022-39393Wasmtime vulnerable to data leakage between instances in the pooling allocator
    34İzleyin

Düzeltme

Hangi sürüme geçmeli

Üretici, paket deposu ve Microsoft kayıtlarından derlenen düzeltme sürümleri. Yükseltmeden önce üreticinin notunu doğrulayın.

Ürün / paketDüzeltilmiş sürümKaynak
crates.io:wasmtime21.0.2Paket deposu (OSV)
crates.io:wasmtime22.0.1Paket deposu (OSV)
crates.io:wasmtime23.0.3Paket deposu (OSV)
crates.io:wasmtime24.0.1Paket deposu (OSV)
crates.io:wasmtime25.0.2Paket deposu (OSV)
debian:rust-wasmtime21.0.2+dfsg-1 · Debian:13Paket deposu (OSV)

İstismar durumu

Bilinen kamuya açık istismar yok

Şu an kamuya açık bir istismar görülmedi. Bu, güvende olduğunuz anlamına gelmez; yalnızca eşiğin biraz daha yüksek olduğunu gösterir.

Araştırma bağlamı

Pentester ve araştırmacı için: saldırı profili, puan anlaşmazlığı, zaman çizelgesi, yama commit’leri, kredi, varyant ve zincir adayları, bug bounty kapsamı. Hepsi mevcut veriden türetilir; istismar kodu içermez.

Zaman çizelgesi

Yayından bugüne: kavram kanıtı, Metasploit modülü, CISA KEV ve düzeltme kaydı. Tarihler kaynakların bildirdiği tarihlerdir.

Yayın dışında tarihli olay yok.

EPSS son 120 gün

FIRST EPSS günlük puanı; yalnızca 0,01 ve üstü değişimler kaydedilir (adım grafiği).

Yama ve commit bağlantıları

Referanslardaki commit, PR ve diff adresleri. Patch-diff ve varyant avı için başlangıç noktası; istismar değil, düzeltmedir.

CNA kaydında adı geçen bulan, bildiren ve analistler. Ada tıkla, aynı araştırmacının diğer kayıtlarını gör.

CNA kaydında kredi yok.

Varyant adayları

Aynı üründe aynı zafiyet sınıfı, 18 ay içinde. Yama kök nedeni kapatmadıysa kardeş hata burada olur.

Gece hesaplanan ilişki yok.

Zincir adayları

Aynı üründe kimlik doğrulama atlatma ile yetki isteyen bir açık kısa aralıkla yayımlanmış: birlikte kimlik doğrulamasız bir yola dönüşebilir.

—

Bug bounty kapsamı

Bilinen herkese açık program yok.

Kaynak: bounty-targets-data (HackerOne, Bugcrowd, Intigriti, YesWeHack herkese açık listeleri).

Teknik detay

Saldırı koşulları

  • Sisteme yerel erişimi olan biri tetikleyebilir.
  • Yönetici yetkisi gerekir.
  • Bir kullanıcının bağlantıyı açması ya da sayfayı ziyaret etmesi gerekir.
  • Zamanlama ya da yapılandırma gibi özel koşullar gerekir.

Başarılı olursa

Gizlilik
yok
Bütünlük
düşük · veri ya da yapılandırma değiştirilebilir
Erişilebilirlik
düşük · hizmet durdurulabilir
Saldırı vektörü
Yerel
Karmaşıklık
Yüksek
Gereken yetki
Yüksek
Kullanıcı etkileşimi
Gerekir
Kapsam
Değişmez
Gizlilik etkisi
Yok
Bütünlük etkisi
Düşük
Erişilebilirlik etkisi
Düşük

CVSS vektörü

CVSS:3.1/AV:L/AC:H/PR:H/UI:R/S:U/C:N/I:L/A:L

nvd-secondary

Saldırı bağlamı

Bu zafiyet sınıfının (CWE) MITRE CAPEC saldırı desenleri ve ATT&CK teknikleri. Tespit kuralı ve tehdit avı için başlangıç noktası.

Değişiklik günlüğü

  1. Düzeltme✗ → ✓

Takip ettiğiniz kayıtlarda bu değişiklikler bildirim olarak da gelir. →

Referanslar

Üretici bildirimleri ve resmî kayıtlar. İstismar/PoC bağlantıları bilinçli olarak dışarıda bırakıldı.

Tüm kayıtlar