本文へスキップ
MameTechNews
バックエンド

WasmtimeのCraneliftに誤コンパイル、細工Wasmでサンドボックス外へ

## POINTS

  • 既定のCraneliftが対象で、大きな関数やSSA値を大量に使うWasmからサンドボックスを出られる。CVSSは9.9。
  • 36.0.19未満は36.0.19で修正済み。37.0.0以上43.0.0未満も影響を受け、v43でインデックス幅を広げて対象外になった。
  • ユーザー投稿やプラグインのWasmを実行しているなら、コンパイラの版を先に確認する。権限が低くてもネットワーク経由で届き得る。

Bytecode Allianceは10月19日、WasmtimeのコンパイラバックエンドCraneliftにある欠陥を公開した。深刻度はCriticalで、CVSS 3.1は9.9。ベクトルはCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H。既定のCraneliftを使うエンジンが対象で、アーキテクチャは問わない。GitHub Advisory DatabaseではCVE-2026-115889として10月23日に記録されている。

CraneliftはSSA値のインデックスをビットパックしている。リリースビルドでは桁があふれても止まらず、IRが別の値を参照して任意に誤コンパイルされ得る。非常に大きなWasm関数、またはSSA値を大量に使うよう作られた関数により、型の取り違えなどを起こし、サンドボックスの外へ出られるとアドバイザリは説明している。攻撃者には低い権限が必要で、利用者の操作は不要だ。

影響範囲は36.0.19未満と、37.0.0以上43.0.0未満。修正版として36.0.19が公開されている。v43ではインデックスをu32にし、上限を超えたら検査するため、この不具合の対象外になった。プラグインや利用者から渡されたWasmをWasmtimeでコンパイルしているサービスは、36系なら36.0.19以降、37から42系ならv43へ上げる。