Skip to content

fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] - #509

Closed
renovate-sh-app[bot] wants to merge 1 commit into
mainfrom
renovate/major-security-cratesaugurs-prophet-wasmtime-wasi
Closed

fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security]#509
renovate-sh-app[bot] wants to merge 1 commit into
mainfrom
renovate/major-security-cratesaugurs-prophet-wasmtime-wasi

Conversation

@renovate-sh-app

@renovate-sh-app renovate-sh-app Bot commented Jun 3, 2026

Copy link
Copy Markdown
Contributor

This PR contains the following updates:

Package Type Update Change
wasmtime-wasi dependencies major 42.0.245.0.3

wasmtime-wasi: WASI path_open(TRUNCATE) bypasses FilePerms::WRITE host restriction

CVE-2026-47261 / GHSA-2r75-cxrj-cmph

More information

Details

Summary

In wasmtime-wasi, when a filesystem preopen is given DirPerms::all() and FilePerms::READ without FilePerms::WRITE, this wasmtime-wasi enforced access control mechanism can be bypassed by using the wasip2 descriptor.open-at or wasip1 path_open interfaces by opening a file with OpenFlags::TRUNCATE oflag only, for example:

dir_descriptor.open_at(
   PathFlags::empty(),
   FILENAME,
   OpenFlags::TRUNCATE,
   DescriptorFlags::READ,
)
wasip1::path_open(
    dir_fd,
    0,
    FILENAME,
    wasip1::OFLAGS_TRUNC,
    wasip1::RIGHTS_FD_READ,
    0,
    0
)

The root cause is that the clause that considered OpenFlags::TRUNCATE did not set open_mode |= OpenMode::WRITE;, used later in that function for the access control check against FilePerms for whether opening that file is permitted. With the bug corrected, these calls to open-at and path_open fail with error-code.not-permitted and ERRNO_PERM respectively.

The bug in crates/wasi/src/filesystem.rs, Dir::open_at, lines 967–969:

if oflags.contains(OpenFlags::TRUNCATE) {
    opts.truncate(true).write(true);
}

and the single line fix is:

if oflags.contains(OpenFlags::TRUNCATE) {
    opts.truncate(true).write(true);
    open_mode |= OpenMode::WRITE;
}

Only wasmtime-wasi embeddings that use a combination of DirPerms::MUTATE with FilePerms::READ are affected by this bug, e.g. those that use in the WasiCtxBuilder:

builder.preopened_dir("readonly", "readonly", DirPerms::READ | DirPerms::MUTATE, FilePerms::READ);

In particular, the Wasmtime project's wasmtime-cli's use of wasmtime-wasi is not affected, because it always sets FilePerms::all() for all preopens.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

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


wasmtime-wasi: WASI path_open(TRUNCATE) bypasses FilePerms::WRITE host restriction

CVE-2026-47261 / GHSA-2r75-cxrj-cmph / RUSTSEC-2026-0149

More information

Details

Summary

In wasmtime-wasi, when a filesystem preopen is given DirPerms::all() and FilePerms::READ without FilePerms::WRITE, this wasmtime-wasi enforced access control mechanism can be bypassed by using the wasip2 descriptor.open-at or wasip1 path_open interfaces by opening a file with OpenFlags::TRUNCATE oflag only, for example:

dir_descriptor.open_at(
   PathFlags::empty(),
   FILENAME,
   OpenFlags::TRUNCATE,
   DescriptorFlags::READ,
)
wasip1::path_open(
    dir_fd,
    0,
    FILENAME,
    wasip1::OFLAGS_TRUNC,
    wasip1::RIGHTS_FD_READ,
    0,
    0
)

The root cause is that the clause that considered OpenFlags::TRUNCATE did not set open_mode |= OpenMode::WRITE;, used later in that function for the access control check against FilePerms for whether opening that file is permitted. With the bug corrected, these calls to open-at and path_open fail with error-code.not-permitted and ERRNO_PERM respectively.

The bug in crates/wasi/src/filesystem.rs, Dir::open_at, lines 967–969:

if oflags.contains(OpenFlags::TRUNCATE) {
    opts.truncate(true).write(true);
}

and the single line fix is:

if oflags.contains(OpenFlags::TRUNCATE) {
    opts.truncate(true).write(true);
    open_mode |= OpenMode::WRITE;
}

Only wasmtime-wasi embeddings that use a combination of DirPerms::MUTATE with FilePerms::READ are affected by this bug, e.g. those that use in the WasiCtxBuilder:

builder.preopened_dir("readonly", "readonly", DirPerms::READ | DirPerms::MUTATE, FilePerms::READ);

In particular, the Wasmtime project's wasmtime-cli's use of wasmtime-wasi is not affected, because it always sets FilePerms::all() for all preopens.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

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


WASI path_open(TRUNCATE) bypasses FilePerms::WRITE host restriction

CVE-2026-47261 / GHSA-2r75-cxrj-cmph / RUSTSEC-2026-0149

More information

Details

This is an entry in the RustSec database for the Wasmtime security advisory
located at
GHSA-2r75-cxrj-cmph
For more information see the GitHub-hosted security advisory.

Severity

  • CVSS Score: 7.5 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Leak in WASIp1 fd_renumber implementation

CVE-2026-54786 / GHSA-3p27-qvp9-27qf / RUSTSEC-2026-0182

More information

Details

This is an entry in the RustSec database for the Wasmtime security advisory
located at
GHSA-3p27-qvp9-27qf
For more information see the GitHub-hosted security advisory.

Severity

  • CVSS Score: 2.3 / 10 (Low)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:L

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


WASI hard links and renames bypass wasmtime-wasi's FilePerms for destination

CVE-2026-58494 / GHSA-4ch3-9j33-3pmj / RUSTSEC-2026-0188

More information

Details

This is an entry in the RustSec database for the Wasmtime security advisory
located at
GHSA-4ch3-9j33-3pmj
For more information see the GitHub-hosted security advisory.

Severity

  • CVSS Score: 6.5 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Release Notes

bytecodealliance/wasmtime (wasmtime-wasi)

v45.0.3

Compare Source

45.0.3

Released 2026-06-24.

Fixed
  • WASI hard links and renames check wasmtime-wasi's FilePerms for destination
    GHSA-4ch3-9j33-3pmj

v45.0.2

Compare Source

45.0.2

Released 2026-06-15.

Fixed

v45.0.1

Compare Source

45.0.1

Released 2026-06-05.

Fixed
  • Fixed regression with WASIp2 zero-delay clocks/timers: allow repeat calls to
    .ready() to make progress.
    #​13511

v45.0.0

Compare Source

45.0.0

Released 2026-05-21.

Added
  • Winch now respects the enable_nan_canonicalization setting.
    #​12939

  • Initial support for invoking component functions asynchronously has been added
    to the C API.
    #​12973

  • Cranelift's s390x backend implements more instructions from z17 and also
    implements more CLIF arithmetic overflow instructions.
    #​12523
    #​12707

  • Wasmtime's support for handling OOM in more APIs has expanded and is now
    documented as well.
    #​12993
    #​12988
    #​13017
    #​13047
    #​13049
    #​13051
    #​13074
    #​13083
    #​13088
    #​13224

  • The Component type now offers reflection APIs over the compiled in-memory
    view of instructions in the same manner Module does.
    #​13073

  • The wasmtime CLI now has a hot-blocks subcommand to explore a
    perf-recorded output and show hot basic blocks of WebAssembly instructions.
    #​13077

  • Wasmtime now has an initial implementation of a copying collector for GC,
    which notably enables collecting cycles unlike the DRC collector.
    #​13093
    #​13107

  • The WASI inherit_network and allow_ip_name_lookup options were added to
    the C API.
    #​13145

  • The C API now has the ability to select Winch as well as the
    RegallocAlgorithm in use.
    #​13155

  • The Wasmtime CLI now has a -Dmax-backtrace=N argument to control the number
    of frames captured.
    #​13218

  • Wasmtime now tracks whether there are any active async tasks within a store
    and provides an embedder API to learn when there are none left.
    #​13246

  • Cranelift now has an idempotent-store elimination pass.
    #​13251

Changed
  • Wasmtime's DRC collector has received some optimizations to get some wins on
    local benchmarking.
    #​12969
    #​12974

  • Wasmtime's C API can now be built without the gc crate feature of Wasmtime.
    #​12805

  • Wasmtime now has an implemented and improved grow-vs-collect heuristic to
    improve behavior of GC-using programs.
    #​12942

  • Cranelift on aarch64 now uses a more optimized frame layout for tail-call-only
    functions.
    #​11608

  • Wasmtime now supports a separate set of GC tunables different from the main
    set of tunables for linear memory to enable configuring it separately.
    #​13080

  • Wasmtime no longer uses pointer authentication instructions for the
    implementation of fibers due to issues on Android.
    #​13118

  • Wasmtime now requires Rust 1.93.0 to compile.
    #​13127

  • The behavior of using Wasmtime as a CMake subproject has been improved.
    #​13157

  • Reference types in the C/C++ API have been refactored and reorganized.
    #​13154
    #​13235

  • The Wasmtime CLI now warns about usage of wasi-common or wasi-threads as these
    components are slated for removal in Wasmtime 47.0.0. For more information see
    the associated RFC.
    #​13264

  • Inlining in Wasmtime now has a different set of configuration options, notably
    more values are packed into -Cinlining=....
    #​13250
Fixed
  • The WASIp1-to-WASIp2 adapter now handles nonblocking I/O in fd_{read,write}
    more appropriately.
    #​13111

  • The Host header is injected less often for wasmtime-wasi-http.
    #​13138

  • Downcasts of funcref values now uses the correct type for imported
    functions.
    #​13161

  • The DRC allocator's memory usage during tracing has been reduced when there
    are large arrays.
    #​13192

  • The performance of reading stdin in WASI has been improved.
    #​13256

  • WASI path_open(TRUNCATE) bypasses FilePerms::WRITE host restriction.
    GHSA-2r75-cxrj-cmph

v44.0.3

Compare Source

44.0.3

Released 2026-06-15.

Fixed

v44.0.2

Compare Source

44.0.2

Released 2026-05-21.

Fixed

v44.0.1

Compare Source

44.0.1

Released 2026-04-30.

Fixed
  • Panic when allocating a table exceeding the size of the host's address space.
    GHSA-p8xm-42r7-89xg

v44.0.0

Compare Source

44.0.0

Released 2026-04-20.

Added
  • The wasmtime CLI now supports a -g flag which runs a built-in wasm program
    to host a gdbstub-compatible server (can be connected to with LLDB) to debug
    guest programs.
    #​12756
    #​12771
    #​12856
    #​12859

  • Wasmtime now has experimental support for the map<K, V> type in the
    component model.
    #​12216

  • Wasmtime's C API now supports wasm tag types.
    #​12763
    #​12803

  • Wasmtime's C API now supports exceptions.
    #​12861

  • Wasmtime's C API has more support for the GC proposal.
    #​12914
    #​12915
    #​12916
    #​12917

  • An initial implementation of the wasi:tls proposal for the 0.3.0-draft
    version has been added.
    #​12834

Changed
  • The demangle Cargo feature of the wasmtime crate is now compatible with
    no_std targets.
    #​12740

  • The wasmtime-wasi-tls-* crates are now merged into one crate with feature
    flags for each backend.
    #​12780

  • Wasmtime now requires Rust 1.92.0 or later to build.
    #​12828

  • The cranelift-codegen crate now compiles for no_std targets.
    #​12812

  • The csdb instruction, a defense-in-depth measure for spectre, is no longer
    emitted by default on aarch64 to match what peer runtimes are doing. In some
    situations this is known to provide up to a 6x performance boost on macOS as
    well.
    #​12932

Fixed
  • Wasmtime's native DWARF has been improved on aarch64 to support recovering
    values more frequently.
    #​12779

  • A significant number of minor issues have been fixed throughout this release.
    In addition to the security advisories found by LLMs there have also
    been a large number of other issues identified as well. Many minor fixes are
    present in this release for various situations for issues found in this
    manner.

v43.0.2

Compare Source

43.0.2

Released 2026-04-30.

Fixed
  • Panic when allocating a table exceeding the size of the host's address space.
    GHSA-p8xm-42r7-89xg

v43.0.1

Compare Source

43.0.1

Released 2026-04-09.

Fixed

v43.0.0

Compare Source

43.0.0

Released 2026-03-20.

Added
  • Wasmtime now supports the WASIp3 snapshot 0.3.0-rc-2026-03-15.
    #​12557

  • The number of frames captured in backtrace collection can now be configured.
    #​12542

  • Wasmtime now supports fine-grained operator cost configuration for when fuel
    is enabled.
    #​12541

  • Configuring the gc_support option is now possible through the C API.
    #​12630

  • Configuring the concurrency_support option is now possible through the C
    API.
    #​12703

  • Debugging-related APIs have been added to access all modules and instances on
    a store.
    #​12637

  • All store entities now expose a "unique ID" for debugging purposes.
    #​12645

  • Cranelift's x64 backend now supports the cls instruction for all integer
    types.
    #​12644

Changed
  • Internal refactoring and support necessary for handling OOM gracefully
    throughout the runtime is proceeding apace. New APIs such as
    FuncType::try_new are available in addition to many internal changes.
    #​12530
    #​12537
    (... and many more ...)

  • Wasmtime's representation of stack frames in the debugging API no longer
    borrows the store itself and is instead represented as a handle.
    #​12566

  • Wasmtime now unconditionally sets SO_REUSEADDR for guest-bound sockets.
    #​12597

  • Cranelift now supports more VRegs which means effectively that larger
    functions will be compilable by default rather than returning a "function too
    large" error.
    #​12611

  • WASIp3 implementations now limit returned memory by default for randomness and
    HTTP headers.
    #​12745
    #​12761

Fixed
  • Running wasmtime wizer over components with modules that contain an
    _initialize function no longer removes the function to preserve the validity
    of the component.
    #​12540

  • Borrow state for host async tasks is now handled more correctly throughout
    Wasmtime, especially in the face of cancellation.
    #​12550

  • Bindings generation now accounts for the fact that future and stream are
    not cloneable types.
    #​12155

  • The impementation of UDP in WASIp2 has had some wakeup-related bugs fixed.
    #​12629

  • Cancellation of host subtasks for component-model-async has been improved and
    works more reliably.
    #​12640

  • Subtask management for component-model-async now no longer reparents which
    fixes a number spec-related divergences.
    #​12570

  • Converting a wasmtime::Error into anyhow::Error and using downcast has
    been fixed.
    #​12689

  • Async stream/future read/write cancellation has had some corner cases fixed.
    #​12704

  • Cranelift's timing infrastructure is now more robust in the face of buggy
    system clocks.
    #​12709

  • The currently running guest task has been corrected in a number of cases
    related to component-model-async and cooperative threading.
    #​12718
    #​12735
    #​12736
    #​12737

  • An issue of lost wakeups with the WASIp3 stdin implementation has been fixed.
    #​12745


Configuration

📅 Schedule: (UTC)

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

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

Rebasing: Whenever PR becomes conflicted, 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

Need help?

You can ask for more help in the following Slack channel: #proj-renovate-self-hosted. In that channel you can also find ADR and FAQ docs in the Resources section.

@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] - autoclosed Jun 3, 2026
@renovate-sh-app renovate-sh-app Bot closed this Jun 3, 2026
@renovate-sh-app
renovate-sh-app Bot deleted the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch June 3, 2026 16:13
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] - autoclosed fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] Jun 4, 2026
@renovate-sh-app renovate-sh-app Bot reopened this Jun 4, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch 2 times, most recently from 5e04a71 to 3767aec Compare June 4, 2026 16:14
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] fix(security/high/crates/augurs-prophet): update security crates/augurs-prophet wasmtime-wasi to v45 [security] Jun 10, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch from 3767aec to 7aecc89 Compare June 22, 2026 19:28
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update security crates/augurs-prophet wasmtime-wasi to v45 [security] fix(security/high/crates/augurs-prophet): update security crates/augurs-prophet wasmtime-wasi to v46 [security] Jun 22, 2026
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update security crates/augurs-prophet wasmtime-wasi to v46 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v46 [security] Jun 29, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch from 7aecc89 to 4f7fbbf Compare July 20, 2026 16:08
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v46 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v47 [security] Jul 20, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch from 4f7fbbf to 3daf27b Compare July 30, 2026 13:09
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v47 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] Jul 30, 2026
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch from 3daf27b to 4fd2904 Compare August 12, 2026 22:08
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v44 [security] Aug 12, 2026
…wasi to v45 [security]

| datasource | package       | from   | to     |
| ---------- | ------------- | ------ | ------ |
| crate      | wasmtime-wasi | 42.0.2 | 45.0.3 |


Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com>
@renovate-sh-app
renovate-sh-app Bot force-pushed the renovate/major-security-cratesaugurs-prophet-wasmtime-wasi branch from 4fd2904 to 631d843 Compare August 13, 2026 07:11
@renovate-sh-app renovate-sh-app Bot changed the title fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v44 [security] fix(security/high/crates/augurs-prophet): update rust crate wasmtime-wasi to v45 [security] Aug 13, 2026
@sd2k

sd2k commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Superseded by #539, which bumps wasmtime, wasmtime-wasi, and wasmtime-wasi-io together to v48. These three crates must share a major version, so bumping them one at a time (as this PR does) cannot compile. #539 resolves both this advisory and the paired one in a single coherent change. Will close once #539 merges.

sd2k added a commit that referenced this pull request Aug 24, 2026
…e-wasi-io to v48 (#539)

Bumps all three wasmtime crates in lockstep from 42 to 48, resolving the
wasmtime (medium) and wasmtime-wasi (high) security advisories flagged by
Renovate in #508 and #509.

Renovate raised these as separate PRs bumping one crate at a time, which is
impossible: wasmtime, wasmtime-wasi and wasmtime-wasi-io must share the same
major version, so each single-crate bump failed to compile with a version
mismatch. Bumping all three together to the latest common release (48.0.0)
satisfies both advisories and requires no source changes.

Supersedes #508 and #509.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@sd2k

sd2k commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Resolved by #539 (now merged), which bumped wasmtime, wasmtime-wasi and wasmtime-wasi-io together to v48. The advisory this PR addressed is fixed on main.

@sd2k sd2k closed this Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant