Skip to content

chore(deps): update rust crate wasmtime-wasi to v33 [security]#346

Open
renovate[bot] wants to merge 1 commit intomainfrom
renovate/crate-wasmtime-wasi-vulnerability
Open

chore(deps): update rust crate wasmtime-wasi to v33 [security]#346
renovate[bot] wants to merge 1 commit intomainfrom
renovate/crate-wasmtime-wasi-vulnerability

Conversation

@renovate
Copy link
Copy Markdown
Contributor

@renovate renovate Bot commented Jul 18, 2025

This PR contains the following updates:

Package Type Update Change
wasmtime-wasi dev-dependencies major 27.0.033.0.0

Wasmtime CLI is vulnerable to host panic through its fd_renumber function

CVE-2025-53901 / GHSA-fm79-3f68-h2fc

More information

Details

Summary

A bug in Wasmtime's implementation of the WASIp1 set of import functions can lead to a WebAssembly guest inducing a panic in the host (embedder).
The specific bug is triggered by calling path_open after calling fd_renumber with either:

  • two equal argument values
  • second argument being equal to a previously-closed file descriptor number value

The corrupt state introduced in fd_renumber will lead to the subsequent opening of a file descriptor to panic. This panic cannot introduce memory unsafety or allow WebAssembly to break outside of its sandbox, however. There is no possible heap corruption or memory unsafety from this panic.

This bug is in the implementation of Wasmtime's wasmtime-wasi crate which provides an implementation of WASIp1. The bug requires a specially crafted call to fd_renumber in addition to the ability to open a subsequent file descriptor. Opening a second file descriptor is only possible when a preopened directory was provided to the guest, and this is common amongst embeddings. A panic in the host is considered a denial-of-service vector for WebAssembly embedders and is thus a security issue in Wasmtime.

This bug does not affect WASIp2 and embedders using components.

Patches

In accordance with Wasmtime's release process patch releases are available as 24.0.4, 33.0.2, and 34.0.2. Users of other release of Wasmtime are recommended to move to a supported release of Wasmtime.

Workarounds

Embedders who are using components or are not providing guest access to create more file descriptors (e.g. via a preopened filesystem directory) are not affected by this issue. Otherwise there is no workaround at this time and affected embeddings are recommended to update to a patched version which will not cause a panic in the host.

Severity

  • CVSS Score: 3.5 / 10 (Low)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:N/A:L

References

This data is provided by the GitHub Advisory Database (CC-BY 4.0).


Release Notes

bytecodealliance/wasmtime (wasmtime-wasi)

v33.0.2

Compare Source

33.0.2

Released 2025-07-18.

Fixed
  • Fix a panic in the host caused by preview1 guests using fd_renumber.
    CVE-2025-53901.

  • Fix a panic in the preview1 adapter caused by guests using fd_renumber.
    #​11277

33.0.1

Released 2025-06-24.

Fixed
  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #​11103

v33.0.1

Compare Source

33.0.1

Released 2025-06-24.

Fixed
  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #​11103

v33.0.0

Compare Source

33.0.0

Released 2025-05-20.

Added
  • Cranelift now has initial support for try_call and try_call_indirect
    instructions, to be used in the future for the WebAssembly exception-handling
    proposal. Wasmtime does not yet implement this proposal yet.
    #​10510
    #​10557
    #​10593

  • Cranelift can now optimize some simple possibly-side-effectful instructions,
    such as division.
    #​10524

  • Wasmtime now supports --invoke for components using the WAVE format.
    #​10054

  • Initial support for the Component Model has landed in Wasmtime's C API. Note
    that the API is not yet feature-complete, however.
    #​10566
    #​10598
    #​10651
    #​10675

  • Wasmtime's C++ API is now available from this repository and the
    bytecodealliance/wasmtime-cpp repository has been archived. Additionally the
    monolithic wasmtime.hh header file has been split into separate header
    files.
    #​10582
    #​10600

  • Wasmtime's cookbook-style documentation has been expanded.
    #​10630

  • Wasmtime's now supports custom yield behavior when using epoch interrupts.
    #​10671

Changed
  • Wasmtime's bindgen now type-checks export functions in the constructor of
    the generated {Worldname}Pre or {Worldname} structs, rather than at the
    call of the export function.
    #​10610

  • Wasmtime's component::Component and component::Instance now have consistient
    get_export and get_export_index methods, which return (ComponentItem, ComponentExportIndex) and ComponentExportIndex, respectively.
    #​10597

  • On failure, wasmtime serve gives an internal server error response, rather
    than closing the connection.
    #​10645

  • Cranelift's single-pass allocator has been disabled due to being unable to
    support internal refactorings in preparation for the WebAssembly exceptions
    proposal. Re-enabling this allocator is tracked at
    regalloc2#217 for
    those interested.
    #​10554

  • Wasmtime's {Array,Extern,Struct}Ref functions will now automatically trigger
    a GC.
    #​10560

  • Wasmtime's GC heaps now use the same translation techniques as linear memories
    meaning they have far fewer bounds-checks than before.
    #​10503

  • Wasmtime's implementation of WASIp2 has moved to wasmtime_wasi::p2 from the
    root of the crate.
    #​10073

  • Wasmtime will no longer emit calls to Cranelift-defined "libcalls" and instead
    everything goes through Wasmtime's libcall mechanism instead, paving the way
    for a future change for more efficient stack limit checking in wasm. This can
    also improve deserialize-from-disk times and improve page cache usage for
    modules that use libcalls as relocations are no longer necessary.
    #​10657

  • Configuration of caching can now be done through an API instead of exclusively
    through a configuration file. Additionally cache-related APIs in Config have
    changed.
    #​10665

  • Resources in the Component Model are now stored in a single table per-instance
    instead of per-type tables. Guests will see a different pattern of index
    allocation but this is not expected to cause any issues at runtime.
    #​10701

Fixed
  • Some math intrinsics have been fixed when compiled by Rust 1.87+.
    #​10534

  • Component model libcalls correctly handle platform-specific argument extension
    in ABIs.
    #​10540

  • An off-by-one issue with DWARF debuginfo has been fixed.
    #​10570

  • The Config::target method is no longer gated by a #[cfg] for an enabled
    compiler, it can be used when only the runtime feature is available.
    #​10618

  • An issue with "simulated" DWARF has been fixed.
    #​10681

  • C/C++ headers are now tested that they can be included in isolation, and a
    number of issues have been fixed.
    #​10694

v32.0.1

Compare Source

32.0.1

Released 2025-06-24.

Fixed
  • Fix a panic with host-defined tables/globals and concrete reference
    types.
    #​11103

v32.0.0

Compare Source

32.0.0

Released 2025-04-21.

Added
  • {Module,Component}::deserialize_raw can now be used to deserialize an
    in-memory module while relying on external management of the memory.
    #​10321

  • An initial implementation of wasi-tls has been added.
    #​10249

  • The wasmtime CLI now supports hexadecimal integer CLI arguments.
    #​10360

  • Cranelift now supports a log2_min_function_alignment flag.
    #​10391

  • A new wasmtime objdump subcommand has been added to help explore and debug
    *.cwasm files.
    #​10405

  • Support for the pooling allocator has been added to the C API.
    #​10484

  • Support for the guest profiler with the component model has been added.
    #​10507

Changed
  • Cranelift MemFlags now has a can_move flag which restricts whether a load
    or store can be moved.
    #​10340

  • The .text size of Pulley *.cwasm files should be smaller with less
    padding.
    #​10285

  • The wasmtime serve subcommand now implements a graceful shutdown on ctrl-c.
    #​10394

  • Stack maps used for GC are now stored in a serialized binary format that is
    faster to deserialize.
    #​10404

  • The aegraph implementation in Cranelift has been simplified to remove the
    union-find and canonical eclass IDs.
    #​10471

  • The store_list and load_list helpers have been specialized in components
    for f32 and f64.
    #​9892

  • Cranelift now removes block params on critical-edge blocks.
    #​10485

  • The Linker::define_unknown_imports_as_default_values API now supports
    defining defaults for more kinds of items.
    #​10500

  • Wasmtime now requires Rust 1.84.0 to compile.
    #​10520

Fixed
  • Winch compilation of extadd instructions has been fixed.
    #​10337

  • Fix an issue with DRC collector's barriers.
    #​10371

  • Loads on (ref null none) that can trap are now performed.
    #​10372

  • Fix reference count management in AnyRef::from_raw.
    #​10374

  • An issue with multi-value returns in Winch has been fixed.
    #​10370

  • A panic at compile-time from an overflowing shift has been fixed when
    targeting aarch64.
    #​10382

  • The wasmtime serve command no longer panics when handle returns before
    calling set.
    #​10387

  • Winch compilation of replace_lane instructions with floats has been fixed.
    #​10393

  • An invalid integer-shift optimization on vector types has been removed.
    #​10413

  • The DWARF loclist to exprloc optimization has been fixed.
    #​10400

  • Objects in the DRC collector are now transitively dec-ref's when collected.
    #​10401

  • A bug with GC rec gropus and registration in an Engine has been fixed.
    #​10435

  • A bug related to GC arrays of GC refs misreported their count of GC edges has
    been fixed.
    #​10453

  • A bug related to appropriately adding stack maps for all GC variables has been
    fixed.
    #​10456
    #​10468

  • A bug with array.fill has been fixed.
    #​10470

  • GC structs are no longer reordered to optimize their size to fix subtyping.
    #​10463

  • Panics related to exceptions and components being mixed has been fixed.
    #​10473

  • Winch stack parameter alignment has been fixed.
    #​10513

  • Rendering inline function frames in a trap backtrace has been fixed.
    #​10523

v31.0.0

Compare Source

31.0.0

Released 2025-03-20.

Added
Changed
  • Pulley's implementation of loads/stores to linear memory has changed to
    better support optimizations and reduction of interpreter opcodes in the
    final binary.
    #​10154

  • Cranelift's verifier now ensures that integers used as address types have the
    correct width.
    #​10209

  • Wasmtime and Cranelift's minimum supported version of Rust is now 1.83.0.
    #​10264

  • Wasmtime now mentions the filename when the input cannot be opened on the CLI.
    #​10292

  • All types are now generated in component::bindgen!, even if they're not
    reachable.
    #​10311

  • Tables allocated with the system allocator now use alloc_zeroed (aka
    calloc) for allocation.
    #​10313

Fixed
  • GC: the is-null-or-i31ref checks have been fixed.
    #​10221

  • GC: an incorrect assertion and canonicalized types for runtime usage has been
    fixed.
    #​10223

  • GC: subtype checks for imported globals during instantiation have been fixed.
    #​10304

  • GC: exposing references to wasm in the gc_alloc_raw libcall has been fixed.
    #​10322

  • Winch's fuel checks correctly sync fuel before the check now.
    #​10231

  • Winch's treatment of stores and other trapping ops has been fixed on AArch64.
    #​10201

  • Winch's handling of the shadow stack pointer has been fixed on AArch64.
    #​10263

  • Winch's handling of address calculations has been fixed on AArch64.
    #​10297

  • Winch's handling of multivalue return of constants has ben fixed.
    #​10315

v30.0.2

Compare Source

30.0.2

Released 2025-02-25.

Fixed
  • MinGW C API builds are now built with a newer version of GCC which seems to
    fix an issue caused by #​9929.
    #​10290
Changed
  • The cranelift-codegen crate now no longer depends on arbitrary, a
    now-unnecessary dependency.
    #​10217

v30.0.1

Compare Source

30.0.1

Released 2025-02-21.

Fixed
  • Fixes an issue building the cranelift-assembler-x64 crate on Windows
    when the Rust toolchain is on a different drive than the project using
    wasmtime. For more details, see the Zulip discussion. #​10270

v30.0.0

Compare Source

30.0.0

Released 2025-02-20.

Added
Changed
  • wasmtime-wasi split the WasiView trait into IoView and WasiView, and
    wasmtime-wasi-http re-uses IoView in WasiHttpView. Details on porting
    for embedders in PR.
    #​10016

  • wasmtime-wasi renamed some exported types and traits. Embedders which use
    Pollable, InputStream, OutputStream, Subscribe, HostInputStream,
    HostOutputStream, PollableFuture, or ClosureFuture from that crate
    will need to rename those imports to their new names, describe in PR.
    #​10036

  • Components using a 64-bit linear memory should never have worked before, but
    they're now rejected earlier in the validation process.
    #​9952

  • Module validation is now deterministic in the face of multiple errors.
    #​9947

  • Wasmtime's minimum supported version of Rust is now 1.82.0.
    #​9956

  • Cranelift will now deduplicate trap[n]z instructions.
    #​10004

  • The --emit-clif option to wasmtime compile now emits post-optimization
    CLIF.
    #​10011

  • The signals-based-traps Cargo feature has been removed in favor of
    auto-detection of available features based on the #[cfg] directives
    available for the target platform.
    #​9941

  • The async_stack_zeroing configuration knob now covers all stack allocations,
    not just those from the pooling allocator.
    #​10027

  • Wasmtime should work-by-default on more platforms, even those where Cranelift
    has no support for the architecture. This is done by ensuring some
    architecture and platform-specific bits are removed on unknown platforms (and
    Pulley is used instead).
    #​10107

  • Wasmtime now compiles on platforms missing 64-bit atomics.
    #​10134

Fixed
  • Fixed a missing case for Ref::matches_ty should return true.
    #​9985

  • A bug with using the single_pass register allocation algorithm on x64/s390x
    has been fixed by refactoring how branches are represented.
    #​10086
    #​10087

  • A bug with argument extensions on riscv64 has been fixed.
    #​10069

  • The PartialEq implementation for RegisteredType has been fixed.
    #​10091

  • The output of component::bindgen! now works with #![no_std] crates.
    #​10105

  • Fix wasmtime wast when combined with --fuel.
    #​10121

  • The wat feature of the C API is now plumbed correctly in a few more
    locations.
    #​10124

  • Spurious wake-ups in blocking_* methods of InputStream and OutputStream
    have been fixed.
    #​10113

v29.0.1

Compare Source

29.0.1

Released 2025-01-21.

Fixed
  • Fix a missing increment in WASIp1-to-WASIp2 adapter which affected WASI
    configurations that have multiple preopened directories.
    #​10064

v29.0.0

Compare Source

29.0.0

Released 2025-01-20.

Added
  • Winch now supports epoch-based interruption.
    #​9737

  • Pulley, Wasmtime's WebAssembly interpreter, has seen quite a lot of progress
    and support fleshed out. It's still not 100% complete but should be about
    ready to start kicking the tires.
    #​9744

  • The Wasmtime CLI now supports a -Wextended-const flag to control whether the
    extended-const wasm proposal is enabled or not.
    #​9768

  • Work continues to progress on the AArch64 Winch backend, bringing it closer to
    completion.
    #​9762
    #​9767
    #​9751
    #​9784
    #​9781
    #​9792
    #​9787
    #​9798
    #​9850

  • Wasmtime now supports a "custom code publisher" which can be useful when
    Wasmtime doesn't have built-in support for a particular environment.
    #​9778

  • Configuration options have been added for wasmtime-wasi-http outgoing
    bodies.
    #​9800

  • Log prefixes can now be disabled for the wasmtime serve command.
    #​9821

  • A new WASMTIME_LOG_NO_CONTEXT environment variable was added to live
    alongside WASMTIME_LOG.
    #​9902

  • Release artifacts for aarch64-musl targets are now available.
    #​9934

Changed
  • Wasmtime libcalls now return whether a trap happened rather than raising a
    trap directly to better prepare for the Pulley interpreter and an eventual
    implementation of Wasm exception-handling.
    #​9710

  • Wasmtime will now use the Pulley interpreter by default on platforms that
    are not supported by Cranelift.
    #​9741

  • Demangling symbols in profiling and debugging has improved to handle failures
    to demangle C++ symbols.
    #​9756

  • WASI WIT files have been updated to 0.2.3.
    #​9807

  • Wasmtime's bindgen! macro in async mode no longer uses #[async_trait]
    an instead natively uses async fn in traits.
    #​9867

  • Floats are no longer canonicalized flowing into or out of components.
    #​9879

  • Instance methods are now translated to static methods in DWARF translation.
    #​9898

  • The C API now supports debug builtins for debugging guest code.
    #​9915

Fixed
  • The header file for wasmtime_instance_pre_instantiate in the C API has been
    fixed.
    #​9770

  • WebAssembly DWARF is more conservative in its GC pass during translation to
    native DWARF.
    #​9829

  • Debugging intrinsics are fixed on Linux to be exported now.
    #​9866

v28.0.1

Compare Source

28.0.1

Released 2025-01-14.

Fixed
  • Fixed deallocating async stacks when using Store::into_data.
    #​10009

v28.0.0

Compare Source

28.0.0

Released 2024-12-20.

Added
  • The ISLE DSL used for Cranelift now has a first-class bool type.
    #​9593

  • Cranelift now supports a new single-pass register allocator designed for
    compile-time performance (unlike the current default which is optimized for
    runtime-of-generated-code performance).
    #​9611

  • The wasmtime crate now natively supports the wasm-wave crate and its
    encoding of component value types.
    #​8872

  • A Module can now be created from an already-open file.
    #​9571

  • A new default-enabled crate feature, signals-based-traps, has been added to
    the wasmtime crate. When disabled then runtime signal handling is not
    required by the host. This is intended to help with future effort to port
    Wasmtime to more platforms.
    #​9614

  • Linear memories may now be backed by malloc in certain conditions when guard
    pages are disabled, for example.
    #​9614
    #​9634

  • Wasmtime's async feature no longer requires std.
    #​9689

  • The buffer and budget capacity of OutgoingBody in wasmtime-wasi-http are
    now configurable.
    #​9670

Changed
  • Wasmtime's external and internal distinction of "static" and "dynamic"
    memories has been refactored and reworded. All options are preserved but
    exported under different names with improved documentation about how they all
    interact with one another. (and everything should be easier to understand)
    #​9545

  • Each Store<T> now caches a single fiber stack in async mode to avoid
    allocating/deallocating if the store is used multiple times.
    #​9604

  • Linear memories now have a 32MiB guard region at the end instead of a 2GiB
    guard region by default.
    #​9606

  • Wasmtime will no longer validate dependencies between WebAssembly features,
    instead delegating this work to wasmparser's validator.
    #​9623

  • Cranelift's isle-in-source-tree feature has been re-worked as an environment
    variable.
    #​9633

  • Wasmtime's minimum supported Rust version is now 1.81.
    #​9692

  • Synthetic types in DWARF are now more efficiently represented.
    #​9700

  • Debug builtins on Windows are now exported correctly.
    #​9706

  • Documentation on Config now clarifies that defaults of some options may
    differ depending on the selected target or compiler depending on features
    supported.
    #​9705

  • Wasmtime's error-related types now all unconditionally implement the Error
    trait, even in #[no_std] mode.
    #​9702

Fixed
  • Field type matching for subtyping with wasm GC has been fixed.
    #​9724

  • Native unwind info generated for s390x has been fixed in the face of tail
    calls.
    #​9725


Configuration

📅 Schedule: (UTC)

  • Branch creation
    • ""
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from b2f7a82 to b69c223 Compare September 25, 2025 21:30
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from b69c223 to 5f81f73 Compare December 10, 2025 11:27
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from 5f81f73 to 9cb325f Compare December 21, 2025 16:24
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from 9cb325f to f4b5622 Compare December 31, 2025 13:55
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from f4b5622 to ffdebdf Compare February 2, 2026 19:06
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from ffdebdf to b226c12 Compare February 12, 2026 11:32
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from b226c12 to 983209d Compare February 25, 2026 09:51
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch from 983209d to e8ec477 Compare March 13, 2026 16:40
@renovate renovate Bot changed the title chore(deps): update rust crate wasmtime-wasi to v33 [security] chore(deps): update rust crate wasmtime-wasi to v33 [security] - autoclosed Mar 27, 2026
@renovate renovate Bot closed this Mar 27, 2026
@renovate renovate Bot deleted the renovate/crate-wasmtime-wasi-vulnerability branch March 27, 2026 02:10
@renovate renovate Bot changed the title chore(deps): update rust crate wasmtime-wasi to v33 [security] - autoclosed chore(deps): update rust crate wasmtime-wasi to v33 [security] Mar 30, 2026
@renovate renovate Bot reopened this Mar 30, 2026
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch 2 times, most recently from e8ec477 to 81b4723 Compare March 30, 2026 21:08
@renovate renovate Bot changed the title chore(deps): update rust crate wasmtime-wasi to v33 [security] chore(deps): update rust crate wasmtime-wasi to v33 [security] - autoclosed Apr 27, 2026
@renovate renovate Bot closed this Apr 27, 2026
@renovate renovate Bot changed the title chore(deps): update rust crate wasmtime-wasi to v33 [security] - autoclosed chore(deps): update rust crate wasmtime-wasi to v33 [security] Apr 27, 2026
@renovate renovate Bot reopened this Apr 27, 2026
@renovate renovate Bot force-pushed the renovate/crate-wasmtime-wasi-vulnerability branch 2 times, most recently from 81b4723 to dad8331 Compare April 27, 2026 21:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants