FirefoxのWebAssembly(Wasm)エンジンに、任意コード実行につながる深刻なメモリ破壊 脆弱性 CVE-2025-13016 が見つかり、修正版が公開されています。
影響を受けるのは、Firefox 143〜145初期の通常版および Firefox ESR 140.4 以前で、推定 1億8,000万以上の月間アクティブユーザー が影響を受けていた可能性があります。
この脆弱性はCVSS 3.1で 7.5(High) と評価されており、悪意あるWebサイトを閲覧しただけで、条件が揃えば攻撃者にブラウザプロセス内で任意コードを実行されるリスクがありました。現在は Firefox 145 / ESR 140.5 以降で修正済みです。
脆弱性の対象バージョン
-
Firefox 通常版:143〜145(修正前ビルド)
-
Firefox ESR:140.0〜140.4
Wasm GCを搭載している主要プラットフォーム(Windows / macOS / Linux / Android)がすべて対象であり、企業環境のLinux端末・VDI・モバイル端末も含めて広い範囲で影響し得ます。
対策バージョン
-
修正済みの Firefox 145 以降
-
修正済みの Firefox ESR 140.5 以降
脆弱性の正体:1行のポインタ演算ミスから生じたスタックバッファオーバーフロー
問題のコードは、FirefoxのWasm GC(ガーベジコレクション)実装の一部である StableWasmArrayObjectElements テンプレートクラスに存在していました。これは、WebAssembly配列のデータを一時的に「安定した領域」にコピーするためのヘルパークラスです。
簡単に言うと、次の2つの不具合が重なって、スタック上のバッファを越えて書き込んでしまう 状態になっていました。
-
ポインタ型を誤ったまま
std::copyを使っていた-
元のコードでは、
inlineStorage()が返すuint8_t*を起点に、numElements_ * sizeof(T)という「バイト数」で終端を計算していました。 -
しかしテンプレート引数
Tがuint16_tのとき、std::copyは「要素数」としてこの値を解釈してしまい、本来の2倍のデータ をコピーしようとします。 -
その結果、スタック上に確保したベクタの領域をオーバーランし、メモリ破壊が発生します。
-
-
コピー元のポインタ自体も誤っていた
-
inlineStorage()は、実際の配列データの前にあるヘッダ(メタデータ)を含む領域の先頭を指していました。 -
正しくは、データヘッダをスキップした位置を返す
addressOfInlineData()相当のポインタを使うべきところを誤っており、配列の中身ではなくメタデータを含む領域からコピー していたことも判明しました。
-
この2点により、GC中にWasm配列をコピーする処理でスタックバッファオーバーフローが発生し得る状態となっていました。
参照
A High-Severity WebAssembly Boundary Condition Vulnerability in Firefox: CVE-2025-13016



を悪用したサイバー攻撃を確認、今すぐ更新を-200x200.png)



