Exception Reference Global Panics Coredump Serialization
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 2/5
- Tiempo estimado
- 1-3 horas
- Aptitud para principiantes
- 76/100
Línea de trabajo
Empieza en crates/wasmtime/src/runtime/coredump.rs, en WasmCoreDump::_serialize y en el match del tipo de referencia alrededor del panic informado. Ejecuta el reproductor exnref-coredump.wat proporcionado con el comando wasmtime con coredump habilitado y verifica después que un global exnref ya no llegue a unreachable!() y que el trap del guest no provoque un panic del host.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Summary
When WebAssembly coredump capture is enabled, an untrusted module containing a valid exnref global can turn an ordinary guest trap into a Rust panic in the host. Coredump serialization assumes every reference type belongs to the external, function, or anyref families; the exception-reference family reaches an unreachable!() arm instead of being encoded or rejected.
Detail
After the guest traps, WasmCoreDump::_serialize recreates module globals in the core dump. For reference-valued globals it calls r.heap_type().top() and handles only Extern, Func, and Any:
ValType::Ref(r) => match r.heap_type().top() {
HeapType::Extern => wasm_encoder::ValType::EXTERNREF,
HeapType::Func => wasm_encoder::ValType::FUNCREF,
HeapType::Any => wasm_encoder::ValType::Ref(wasm_encoder::RefType::ANYREF),
ty => unreachable!("not a top type: {ty:?}"),
},
The exception-reference top type is Exn, so a mutable exnref global reaches the final arm. The reproducer enables the existing coredump option and invokes an exported function containing unreachable; no harness or source change is involved.
Reproduce
set -eu
git clone --depth 1 https://github.com/bytecodealliance/wasmtime.git
cd wasmtime
git rev-parse HEAD
cargo build --bin wasmtime --no-default-features \
--features 'run,wat,cranelift,compile,coredump,clap/default,clap/wrap_help'
cat > exnref-coredump.wat <<'WAT'
(module
(global (export "g") (mut exnref) (ref.null exn))
(func (export "trap")
unreachable))
WAT
set +e
RUST_BACKTRACE=0 ./target/debug/wasmtime run -D coredump=guest.dump \
--invoke trap exnref-coredump.wat
status=$?
set -e
printf 'exit=%s\n' "$status"
Observed output on the affected HEAD:
3ebfbe5af4927c157d6fcaca42b8dbb6d17b73fb
thread 'main' (...) panicked at crates/wasmtime/src/runtime/coredump.rs:194:31:
internal error: entered unreachable code: not a top type: Exn
exit=101
- Lenguaje dominante
- Rust
- Estrellas
- 18.8k
- Forks
- 1.9k
- Merge medio
- 23 h 57 min
- PR fusionados (30 d)
- 392
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de bytecodealliance/wasmtime
-
wasm-proposal:gc
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
bytecodealliance/wasmtime#13808 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Cranelift: Alias analysis panic with `compute_observed_stores`Posiblemente ocupada @fitzgen la tomó hoy. Abiertobug cranelift
bytecodealliance/wasmtime#15053 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
Element segment expressions are evaluated interleaved with table writes during instantiationAbiertobug
Dificultad 4/5 3-5 días Aptitud para principiantes 24/100
bytecodealliance/wasmtime#15036 ·
Los mantenedores suelen responder en 1 día
-
bug wasi-http
Dificultad 3/5 1-2 días Aptitud para principiantes 32/100
bytecodealliance/wasmtime#15026 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Proposal to rework `MemoryCreator` and remove internal types.Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abiertowasmtime:api
Dificultad 5/5 Más de una semana Aptitud para principiantes 25/100
bytecodealliance/wasmtime#14989 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
Todos los issues de bytecodealliance/wasmtime
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mozilla-services/syncstorage-rs#2715 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 70/100
-
documentation
Dificultad 1/5 Menos de una hora Aptitud para principiantes 82/100
physicsdolphin/nv-uefi-unlocker#53 · 4 reacciones ·
Los mantenedores suelen responder en 1 día
-
area/desktop-shell
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
yantrikos/yantrik-os#1012 ·
Los mantenedores suelen responder en 1 día