Advisory Database
  • Advisories
  • Dependency Scanning
  1. cargo
  2. ›
  3. wasmtime-wasi
  4. ›
  5. CVE-2026-47261

CVE-2026-47261: wasmtime-wasi: WASI path_open(TRUNCATE) bypasses `FilePerms::WRITE` host restriction

June 5, 2026 (updated July 8, 2026)

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.

References

  • github.com/advisories/GHSA-2r75-cxrj-cmph
  • github.com/bytecodealliance/wasmtime/releases/tag/v24.0.9
  • github.com/bytecodealliance/wasmtime/releases/tag/v36.0.10
  • github.com/bytecodealliance/wasmtime/releases/tag/v44.0.2
  • github.com/bytecodealliance/wasmtime/releases/tag/v45.0.0
  • github.com/bytecodealliance/wasmtime/security/advisories/GHSA-2r75-cxrj-cmph
  • nvd.nist.gov/vuln/detail/CVE-2026-47261
  • rustsec.org/advisories/RUSTSEC-2026-0149.html

Code Behaviors & Features

Detect and mitigate CVE-2026-47261 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions before 24.0.9, all versions starting from 25.0.0 before 36.0.10, all versions starting from 37.0.0 before 44.0.2

Fixed versions

  • 24.0.9
  • 36.0.10
  • 44.0.2

Solution

Upgrade to versions 24.0.9, 36.0.10, 44.0.2 or above.

Impact 7.5 HIGH

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

Learn more about CVSS

Weakness

  • CWE-284: Improper Access Control

Source file

cargo/wasmtime-wasi/CVE-2026-47261.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sun, 08 Nov 2026 00:16:41 +0000.