---
title: "Wasmtime（aarch64）で、巨大な br_table からサンドボックス外の任意コードへ飛ばせる不具合（CVE-2026-115893）: 36.0.19・48.0.7・49.0.4 で修正"
url: https://n-t-p.io/worldsecurity/articles/wasmtime-cranelift-aarch64-br-table-sandbox-escape-48-0-7-49-0-4-2026-115893
lang: ja
kind: 速報
category: 脆弱性・CVE
author: World Security 編集部
published: 2026年10月31日
updated: 2026年10月31日
severity: 緊急
cve: CVE-2026-115893
---

# Wasmtime（aarch64）で、巨大な br_table からサンドボックス外の任意コードへ飛ばせる不具合（CVE-2026-115893）: 36.0.19・48.0.7・49.0.4 で修正

> **TL;DR:** WebAssembly 実行環境 Wasmtime の aarch64 向け Cranelift で、分岐先が約 25 万 6 千を超える br_table から、飛び先が誤って計算され、サンドボックスの外の任意コードへ飛ばせる不具合（CVE-2026-115893、GitHub は Critical、GitHub 提供の CVSS v3.1 は 9.9、CWE-691）。対象は 36.0.19 未満、37.0.0 以上 48.0.7 未満、49.0.0 以上 49.0.4 未満で、修正版は 36.0.19・48.0.7・49.0.4。NVD は評価なし（Deferred）。EPSS 0.99%、KEV なし（当サイトでは未再現）。

**要点**
- aarch64 で既定の Cranelift を使う Wasmtime が対象。1 つの br_table の分岐先が約 25 万 6 千を超えると、条件分岐の飛び先が誤って計算される（勧告の説明、当サイトでは未再現）
- 飛び先は利用者が決められるずれ幅で任意のコードに届き、サンドボックスの脱出につながる。aarch64 対応を入れた 2020 年以降のすべての版が影響を受ける（勧告の記載）
- 対象は 36.0.19 未満、37.0.0 以上 48.0.7 未満、49.0.0 以上 49.0.4 未満。修正版は 36.0.19・48.0.7・49.0.4（いずれも 2026-10-19 UTC）。最新は 50.0.1
- 信頼できない Wasm モジュールを aarch64 で動かす構成かどうかの確認が先（記事側の推定）。分岐先が極端に多い br_table の拒否は記事側の推定で、勧告の回避策ではない
- NVD は評価なし（Deferred）、EPSS は 0.99%（10/31）、KEV は掲載なし。悪用の報告は確認できていない

WebAssembly 実行環境 Wasmtime の Cranelift コンパイラ（aarch64 向け）に、巨大な `br_table` 命令から、サンドボックスの外にある任意のコードへ飛ばせる不具合（CVE-2026-115893、GHSA-mghf-wjfp-p5xm）が公開されました。GitHub の深刻度は Critical、GitHub 提供の CVSS v3.1 は 9.9 です。修正版は 36.0.19、48.0.7、49.0.4 です。**ただし、影響を受けるのは、aarch64（Arm 64 ビット）上で、既定の Cranelift バックエンドを使い、外部から受け取った Wasm モジュールを動かしている場合です**（下の「影響を受ける条件」を参照）。

## 何が起きるか

- `br_table` は、Wasm の「番号に応じて分岐先を選ぶ」命令です。
- 勧告によると、1 つの `br_table` の分岐先が約 25 万 6 千を超える Wasm モジュールを aarch64 でコンパイルすると、条件分岐の飛び先が誤って計算されます。
- 修正コミットの説明では、既定の分岐（番号が表の大きさを超えた場合）の命令が aarch64 では前後約 1MiB までしか届かず、その命令の後ろに全分岐先のオフセット表が置かれているため、表が大きいと飛び先がはみ出し、値が巻き戻って誤った場所へ飛ぶ、とされています。
- 勧告は、この誤った飛び先が、利用者が決められるずれ幅で任意のコードに届き、サンドボックスの脱出（エスケープ）につながる、としています。
- 勧告は、aarch64 で既定設定の Wasmtime が対象で、aarch64 対応を入れた 2020 年（v1.0 より前）以降のすべての版が影響を受ける、としています。
- CISA の整理（SSVC）は、悪用 none（確認なし）、自動化 no、技術的影響 total です（NVD 経由で確認）。CISA の KEV には載っていません（11/1 時点）。

## 影響を受ける条件

| 項目 | 内容 |
|---|---|
| 対象 | Rust の wasmtime クレート。36.0.19 より前、37.0.0 以上 48.0.7 未満、49.0.0 以上 49.0.4 未満（GitHub の構造化データ） |
| 実行環境 | aarch64 で、既定の Cranelift バックエンドを使う Wasmtime |
| 前提 | 利用者が用意した（信頼できない）Wasm モジュールをコンパイル・実行すること。評価は権限 低（PR:L）・影響範囲 変化（S:C） |
| 修正版 | 36.0.19、48.0.7、49.0.4（いずれも 2026-10-19 UTC に公開）。2026-11-01 時点の最新は v50.0.1（10/29 UTC） |
| 弱点 | CWE-691（制御フローの管理の不備） |
| 評価 | GitHub 提供の CVSS v3.1 は 9.9（ネットワーク・低複雑度・権限 低・ユーザー操作不要・範囲 変化・機密性／完全性／可用性が高） |
| NVD | Deferred（NVD 自身の評価はなし。表示されている 9.9 は GitHub 提供） |
| EPSS | 0.99%（10/31 時点、パーセンタイル 62.5%） |
| KEV | 掲載なし |

## 修正の中身

飛び先の誤りを直した修正コミットは、`main` 向けが e61df1b（PR #14826、2026-10-19 UTC）です。`JTSequence` という命令列の既定分岐を、条件分岐ではなく「範囲外の番号を表の最後の項目（既定の分岐先）に丸める」条件つき選択に置き換え、既定の分岐にも同じオフセット表を使うようにしました。各リリース用の修正コミットは次のとおりです。

| 版 | 修正コミット | 取り込み |
|---|---|---|
| 36.0.19 | f517bd6（PR #14818） | 2026-10-19 UTC |
| 48.0.7 | 222ff3a（PR #14819） | 2026-10-19 UTC |
| 49.0.4 | 9945498（PR #14820） | 2026-10-19 UTC |

それぞれのコミットが、対応するリリースのタグに含まれることは、タグとの比較で確認しました（各コミットはタグより前で、タグ側が 1 コミット先）。リリースの修正コミットには、この件以外の修正（WASI HTTP 周りなど）も同時に入っています。この記事では CVE-2026-115893 に関する部分だけを扱います。50.0.0（2026-10-20 UTC）には、この件の試験ファイル（`tests/all/br_table.rs`）が含まれていますが、修正が入っていることの直接の確認はしていません。

## 対応

1. Wasmtime を修正版以上に更新します（36 系は 36.0.19 以上、48 系は 48.0.7 以上、49 系は 49.0.4 以上。37〜47 系は修正版が示されていないため、48 系以上への移行が必要になる場合があります）。
2. 利用する版の系統によっては、勧告の後にも修正リリースが出ています（36.0.20、48.0.8、49.0.5、50.0.1。いずれも 10/29 UTC）。更新先は最新の版を確認して選びます。
3. すぐ更新できない場合は、信頼できない Wasm モジュールを aarch64 の Cranelift で動かす構成かどうかを確認します（本記事の推定）。分岐先が極端に多い `br_table` を含むモジュールを、受け付ける前に拒否する方法も考えられますが、勧告が示す回避策ではなく、本記事の推定です。

## 未確認の点

- 悪用の報告は確認できていません。KEV にも載っていません。
- NVD は自身の評価をしていません。CVSS は GitHub 提供の値です。
- 分岐先が約 25 万 6 千を超える `br_table` が実際にどの程度のモジュールで作れるか、また実際の環境でサンドボックスを抜けられるかは、確認していません。勧告の記載に基づきます。
- 修正コミットには Winch（別のコンパイラ）の aarch64 のコードや試験も含まれています。Winch が影響を受けるかは、勧告に書かれておらず確認していません。
- 50.0.0 以降は勧告の対象版に入っていませんが、修正の取り込みは直接確認していません。
- 37 系から 47 系は、勧告の対象範囲に入っていますが、修正版が示されていません。これらの系統の扱いは確認していません。
- 修正リリース（10/19）、NVD への公開（10/23）、GitHub の勧告（10/28）の順になった経緯は確認できていません。10/29 の追加リリースの内容は確認していません。
- 日付は、タグ・リリースは Git と GitHub の記録、公開日は GitHub と NVD の記載に基づきます。


## 出典
- [GitHub Advisory GHSA-mghf-wjfp-p5xm](https://github.com/advisories/GHSA-mghf-wjfp-p5xm) — GitHub
- [NVD CVE-2026-115893](https://nvd.nist.gov/vuln/detail/CVE-2026-115893) — NIST NVD
- [修正コミット e61df1b（main）](https://github.com/bytecodealliance/wasmtime/commit/e61df1b454be9313d61a5f8de07722a421139bbe) — GitHub
- [修正コミット f517bd6（36.0.19）](https://github.com/bytecodealliance/wasmtime/commit/f517bd6e890c7c1291ab9fe05d8cc0c9f11e56aa) — GitHub
- [修正コミット 222ff3a（48.0.7）](https://github.com/bytecodealliance/wasmtime/commit/222ff3a65dab9aa7011f8c246937751a0bac5abd) — GitHub
- [修正コミット 9945498（49.0.4）](https://github.com/bytecodealliance/wasmtime/commit/994549891c8a706cb4f2809f9d17b9f67b31e618) — GitHub
- [修正プルリクエスト #14826](https://github.com/bytecodealliance/wasmtime/pull/14826) — GitHub
- [Wasmtime v49.0.4 リリース](https://github.com/bytecodealliance/wasmtime/releases/tag/v49.0.4) — GitHub
- [RustSec RUSTSEC-2026-0379](https://rustsec.org/advisories/RUSTSEC-2026-0379.html) — RustSec
- [FIRST EPSS CVE-2026-115893](https://api.first.org/data/v1/epss?cve=CVE-2026-115893) — FIRST

---
出典: World Security（株式会社NTP） https://n-t-p.io/worldsecurity/articles/wasmtime-cranelift-aarch64-br-table-sandbox-escape-48-0-7-49-0-4-2026-115893