目次(5)

CVE-2026-115893
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)が含まれていますが、修正が入っていることの直接の確認はしていません。
対応
- Wasmtime を修正版以上に更新します(36 系は 36.0.19 以上、48 系は 48.0.7 以上、49 系は 49.0.4 以上。37〜47 系は修正版が示されていないため、48 系以上への移行が必要になる場合があります)。
- 利用する版の系統によっては、勧告の後にも修正リリースが出ています(36.0.20、48.0.8、49.0.5、50.0.1。いずれも 10/29 UTC)。更新先は最新の版を確認して選びます。
- すぐ更新できない場合は、信頼できない 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 の記載に基づきます。
この記事について
- 執筆・編集
- World Security 編集部
出典
- GitHub Advisory GHSA-mghf-wjfp-p5xm(GitHub)
- NVD CVE-2026-115893(NIST NVD)
- 修正コミット e61df1b(main)(GitHub)
- 修正コミット f517bd6(36.0.19)(GitHub)
- 修正コミット 222ff3a(48.0.7)(GitHub)
- 修正コミット 9945498(49.0.4)(GitHub)
- 修正プルリクエスト #14826(GitHub)
- Wasmtime v49.0.4 リリース(GitHub)
- RustSec RUSTSEC-2026-0379(RustSec)
- FIRST EPSS CVE-2026-115893(FIRST)



