何が起きたか
Cranelift コンパイラは SSA 値のインデックスをビット詰めして保持しており、リリースビルドでは桁あふれが黙って起きて、IR 内の値の参照が誤ったものになります。非常に大きな関数本体を持つ Wasm や、多数の SSA 値を使うよう細工した Wasm によって、型の取り違えなどを引き起こしサンドボックスを抜けられます。既定設定(Cranelift バックエンド)の Wasmtime であれば、アーキテクチャやプラットフォームを問わず影響します。
やること
36 系は 36.0.19 へ、それ以外は 43.0.0 以降へ更新します。43 では SSA 値のインデックスが u32 全体を使い、上限を超えたら検査で止まるよう変更されています。信頼できない Wasm モジュールを実行している環境は優先して対応してください。
出典
Wasmtime のセキュリティ勧告github.com英語 ↗GitHub Advisory Databasegithub.com英語 ↗上の要約は通り道編集部がまとめたものです。影響範囲と修正版は必ず各出典で確認してください。