Wasmtime: WASI path_open(TRUNCATE) bypasses `FilePerms::WRITE` host restriction
Key facts
- Attack vector
- Network
- Privileges required
- None
- User interaction
- None
- Attack complexity
- Low
- Impact type
- Security bypass
- Confidentiality · integrity · availability
- None · High · None
- Fix status
- Partial Red Hat: 2 without a fix
Attack profile from CVSS 3.1 · CNA. Fix status from CNA, GitHub and Red Hat. Impact type from CWE-284.
Summary
Wasmtime is a runtime for WebAssembly. In versions prior to 24.0.9, 36.0.10, and 44.0.2, when a filesystem preopen is given DirPerms::all() and FilePerms::READ without FilePerms::WRITE, this access control mechanism can be bypassed via the wasip2 descriptor.open-at or wasip1 path_open interfaces by opening a file with only the OpenFlags::TRUNCATE oflag. The root cause is that the clause handling OpenFlags::TRUNCATE in crates/wasi/src/filesystem.rs (Dir::open_at, lines 967–969) did not set open_mode |= OpenMode::WRITE;, which is later used for the access control check against FilePerms to determine whether opening the file is permitted; the single-line fix adds that missing assignment, after which the affected calls correctly fail with error-code.not-permitted and ERRNO_PERM respectively. Only wasmtime-wasi embeddings that combine DirPerms::MUTATE with FilePerms::READ are affected by this bug. 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. This issue has been fixed in versions 24.0.9, 36.0.10 and44.0.2.
Why it matters now
SSVC decision points
CISA ADP · SSVC 2.0.3
- Exploitation
- None
- Automatable
- Yes
- Technical impact
- Partial
The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.
Affected products
| Vendor | Product | Affected versions | Fixed in | Status | Source |
|---|---|---|---|---|---|
| bytecodealliance | wasmtime | 37.0.0 to before 44.0.2; 25.0.0 to before 36.0.10; before 24.0.9 | 44.0.2, 36.0.10, 24.0.9 | Patch available | CNA |
| — | wasmtime-wasi (crates.io) | 37.0.0 to before 44.0.2 | 44.0.2 | Patch available | GHSA-2r75-cxrj-cmph |
| — | wasmtime-wasi (crates.io) | 25.0.0 to before 36.0.10 | 36.0.10 | Patch available | GHSA-2r75-cxrj-cmph |
| — | wasmtime-wasi (crates.io) | before 24.0.9 | 24.0.9 | Patch available | GHSA-2r75-cxrj-cmph |
- wasmtime Vendorbytecodealliance Affected 37.0.0 to before 44.0.2; 25.0.0 to before 36.0.10; before 24.0.9 Fixed in 44.0.2, 36.0.10, 24.0.9 Patch available CNA
- wasmtime-wasi (crates.io) Vendor— Affected 37.0.0 to before 44.0.2 Fixed in 44.0.2 Patch available GHSA-2r75-cxrj-cmph
- wasmtime-wasi (crates.io) Vendor— Affected 25.0.0 to before 36.0.10 Fixed in 36.0.10 Patch available GHSA-2r75-cxrj-cmph
- wasmtime-wasi (crates.io) Vendor— Affected before 24.0.9 Fixed in 24.0.9 Patch available GHSA-2r75-cxrj-cmph
CPE configurations NVD · 1
| CPE | Versions | Role | Vendor |
|---|---|---|---|
| cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:rust:*:* | before 24.0.9; 25.0.0 to before 36.0.10; 37.0.0 to before 44.0.2 | Vulnerable | bytecodealliance |
- cpe:2.3:a:bytecodealliance:wasmtime:*:*:*:*:*:rust:*:* Versions before 24.0.9; 25.0.0 to before 36.0.10; 37.0.0 to before 44.0.2 Vulnerable ·bytecodealliance
Remediation
- Fix · CNA wasmtime (bytecodealliance) Fixed in 44.0.2, 36.0.10, 24.0.9
- Fix · GHSA-2r75-cxrj-cmph wasmtime-wasi (crates.io) Fixed in 44.0.2 Advisory →
- Fix · GHSA-2r75-cxrj-cmph wasmtime-wasi (crates.io) Fixed in 36.0.10 Advisory →
- Fix · GHSA-2r75-cxrj-cmph wasmtime-wasi (crates.io) Fixed in 24.0.9 Advisory →
Vendor assessments
Red Hat
Red Hat rating: Important. Red Hat's page for this CVE →
| Product | Status | Plan or fix |
|---|---|---|
| Red Hat Connectivity Link 1 | Affected | No fix yet: Fix deferred |
| Red Hat Enterprise Linux 10 | Affected | No fix yet: Fix deferred |
Not affected: 1 product
- Red Hat Hardened Images
Timeline
- 2026-10-02 Threatist record created from CVE-2026-47261
- 2026-10-03 Alias added: GHSA-2r75-cxrj-cmph
References
Advisory 2
Other 6
- https://github.com/bytecodealliance/wasmtime/releases/tag/v24.0.9
- https://github.com/bytecodealliance/wasmtime/releases/tag/v36.0.10
- https://github.com/bytecodealliance/wasmtime/releases/tag/v44.0.2
- https://github.com/bytecodealliance/wasmtime/releases/tag/v45.0.0
- https://github.com/bytecodealliance/wasmtime
- https://rustsec.org/advisories/RUSTSEC-2026-0149.html
More bytecodealliance Wasmtime vulnerabilities
- TI-2026-21632 Wasmtime is vulnerable to panic when dropping a `[Typed]Func::call_async` future CVSS 4.0MEDIUM 6.9
- TI-2023-11636 Guest-controlled out-of-bounds read/write on x86_64 in wasmtime CVSS 3.1CRITICAL 10.0
- TI-2022-18765 Wasmtime vulnerable to data leakage between instances in the pooling allocator CVSS 3.1HIGH 8.6
- TI-2022-08604 Use after free in Wasmtime CVSS 3.1CRITICAL 9.8
- TI-2022-18766 wasmtime_trap_code C API function has out of bounds write vulnerability CVSS 3.1CRITICAL 9.8
- TI-2026-27209 Wasmtime with Winch compiler backend on aarch64 may allow a sandbox-escaping memory access CVSS 4.0CRITICAL 9.0
Sources
- CVE-2026-47261 · CVE Program
- CVE-2026-47261 · NVD
- FIRST EPSS
- GHSA-2r75-cxrj-cmph · GitHub Advisory Database · CC BY 4.0
- CVE-2026-47261 · Red Hat security data · CC BY 4.0
This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences