Low Severity CVE-2026-115893
Published: Oct 31, 2026

[GitHub] CVE-2026-115893-wasmtime-sandbox-escape

Other
Type
N/A
CVSS Score
10
Views
Anonymous
Author

Description

CVE-2026-115893: full Wasmtime aarch64 Cranelift br_table sandbox-escape public exploit, PoV, calibration notes, and verification evidence.

# CVE-2026-115893: Wasmtime aarch64 Sandbox Escape

A working full sandbox-escape exploit, proof of vulnerability, and verification
package for CVE-2026-115893 — the aarch64 Cranelift `br_table`
miscompilation in Wasmtime.

## Overview

CVE-2026-115893 is a compiler control-flow bug in Wasmtime's aarch64 Cranelift
backend. A Wasm `br_table` with enough targets produces a `JTSequence` whose
default `B.cond` branch has a displacement outside the conditional-branch
encoding range. The offset wraps, so a valid Wasm module can jump to a
user-influenced offset inside JIT code.

This repository demonstrates a full escape:

- the miscompiled branch lands in an executable JIT literal pool that the
module influenced at compile time;
- the pool executes an AArch64 payload;
- the payload performs a host syscall, replaces the Wasmtime process with
`/usr/bin/touch`, and creates `/tmp/wt-pwn` outside the guest.

The module has no imports and does not use WASI. This is host code execution
with the Wasmtime process's privileges, not automatically root.

This is **not** CVE-2026-115889. That is a separate Cranelift index-overflow
bug whose reproduced impact is a compiler panic/DoS.

## Affected versions

| Version range | CVE-2026-115889 | CVE-2026-115893 (aarch64) |
|---|---|---|
| `<36.0.19` | Vulnerable | Vulnerable |
| `36.0.19` | Fixed | Fixed |
| `37.0.0`–`42.x` | Vulnerable | Vulnerable |
| `43.0.0`–`48.0.6` | Fixed | Vulnerable on aarch64 |
| `48.0.7` | Fixed | Fixed |
| `49.0.0`–`49.0.3` | Fixed | Vulnerable until 49.0.4 |
| `49.0.4+` | Fixed | Fixed |

For this CVE, use a dedicated fixed release: **49.0.4**, **48.0.7**, or
**36.0.19**.

## Verified result

| Environment | Wasmtime | Result |
|---|---|---|
| macOS 26.7.1 arm64, native | 49.0.3 | PASS 5/5: rc=0, marker created |
| Linux arm64 container | 49.0.3 | PASS 3/3: rc=0, marker created |
| macOS arm64 | 49.0.4 | REJECT 3/3: rc=1, no marker |
| Linux arm64 container | 49.0.4 | REJECT 3/3: rc=1, no marker |
| macOS

Community Rating
0

Login to rate this exploit

Quick Actions