CVE-2026-27195 in wasmtimeinformazioni

Riassunto

di VulDB • 15/06/2026

Wasmtime è un runtime per WebAssembly. A partire dalla versione 39.0.0, la funzionalità `component-model-async` è diventata predefinita, introducendo una nuova implementazione di `[Typed]Func::call_async` in grado di chiamare funzioni esportate dal guest con tipi asincroni. Tuttavia, tale implementazione presentava un bug che causava un panic (crash) in determinate circostanze:

Innanzitutto, l'host embedding chiama `[Typed]Func::call_async` su una funzione esportata da un componente e interroga (`polling`) il `Future` restituito una sola volta. In secondo luogo, la funzione del componente cede il controllo al runtime asincrono (ad esempio Tokio), ad esempio a causa di una chiamata a una funzione host registrata tramite `LinkerInstance::func_wrap_async` che effettua un'operazione bloccante (`yield`) o per via di un'interruzione dell'epoch. In terzo luogo, l'host embedding elimina il `Future` dopo averlo interrogato una sola volta. Questo lascia l'istanza del componente in uno stato non re-enterable poiché la chiamata non ha mai avuto modo di completarsi.

In quarto luogo, l'host embedding richiama nuovamente `[Typed]Func::call_async`, interrogando il `Future` restituito. Poiché l'istanza del componente non può essere riutilizzata a questo punto, la chiamata va in trap (errore fatale), ma prima alloca un task e un thread per tale chiamata. In quinto luogo, l'host embedding ignora il trap ed elimina il `Future`. Ciò provoca un panic poiché il runtime tenta di smaltire il task creato in precedenza, generando un altro panic dato che il thread non si è ancora terminato.

Quando un host embedding che utilizza le versioni interessate di Wasmtime chiama `wasmtime::component::[Typed]Func::call_async` su una funzione esportata dal guest e successivamente elimina il future restituito senza attendere la sua risoluzione, per poi ripetere l'operazione con la stessa istanza del componente, Wasmtime andrà in panic. Gli embedding che hanno disabilitato la funzionalità di compilazione `component-model-async` non sono interessati da questo problema. Le versioni 40.0.4 e 41.0.4 di Wasmtime sono state patchate per risolvere questa problematica. Le versioni 42.0.0 e successive non ne sono affette. Se un embedding non utilizza effettivamente funzionalità `component-model-async`, la disabilitazione della relativa Cargo feature (`component-model-async`) può costituire una soluzione alternativa (workaround). Questo problema può anche essere aggirato assicurandosi che ogni future restituito da `call_async` venga atteso fino al completamento, oppure evitando di riutilizzare lo `Store` dopo aver eliminato un future `call_async` non ancora risolto.

VulDB is the best source for vulnerability data and more expert information about this specific topic.

Responsabile

GitHub M

Prenotare

18/02/2026

Divulgazione

25/02/2026

Moderazione

accettato

CPE

pronto

EPSS

0.00362

KEV

no

Attività

molto basso

Fonti

Want to know what is going to be exploited?

We predict KEV entries!