はじめに
人気のNode.jsライブラリ「vm2」において、サンドボックスエスケープの
深刻な脆弱性が発見されました。この脆弱性が悪用された場合、攻撃者は基盤となるオペレーティングシステム上で任意のコードを実行する可能性があります。
この問題は、セキュリティ研究者によって
CVE-2026-22709として追跡されており、CVSSスコアは9.8(10.0点満点中)と非常に高く評価されています。
脆弱性の詳細
vm2のメンテナーであるPatrik Simek氏によると、この脆弱性はvm2バージョン3.10.0において、Promise.prototype.thenおよびPromise.prototype.catchコールバックのサニタイズ処理が不適切であったことに起因します。
Endor Labsの研究者Peyton Kennedy氏とCris Staicu氏の指摘では、JavaScriptの非同期関数がlocalPromiseオブジェクトではなくglobalPromiseオブジェクトを返すことが鍵となっています。そして、globalPromise.prototype.thenおよびglobalPromise.prototype.catchは、localPromiseとは異なり適切にサニタイズされていなかったため、サンドボックスエスケープの経路が生じ、結果としてサンドボックス外での任意のコード実行が可能になります。
過去の事例とプロジェクトの状況
vm2では近年、同様のサンドボックスエスケープの脆弱性が
繰り返し報告されており、過去には以下のCVEが公開されています。
- CVE-2022-36067
- CVE-2023-29017
- CVE-2023-29199
- CVE-2023-30547
- CVE-2023-32314
- CVE-2023-37466
- CVE-2023-37903
2023年7月のCVE-2023-37903の発見時には、Simek氏がプロジェクトの
継続中止を発表した経緯があります。しかし、その後GitHubリポジトリのREADMEファイルからはこの記述が削除され、2025年10月にはセキュリティページが更新され、vm2 3.xバージョンが
積極的にメンテナンスされていることが明記されました。
しかし、vm2のメンテナー自身も今後新たなバイパス手法が発見される可能性が高いことを認めており、常にライブラリを最新の状態に保つこと、そして
より堅牢な代替手段を検討するようユーザーに促しています。
推奨される対策
この深刻な脆弱性を鑑み、ユーザーは以下の対策を速やかに講じることを
強く推奨します。
- vm2ライブラリを
最新バージョン3.10.3にアップデートしてください。このバージョンには、追加のサンドボックスエスケープに対する修正も含まれています。
- より強力な分離を求める場合は、V8のネイティブなIsolateインターフェースを利用する
isolated-vmのような代替ライブラリの検討、またはDockerなどを用いたコンポーネント間の論理的な分離を検討してください。
サンドボックスモデルには限界があり、完全に安全な環境を構築するためには多層的なセキュリティアプローチが不可欠であることを再認識させる事態と言えるでしょう。
元記事: https://thehackernews.com/2026/01/critical-vm2-nodejs-flaw-allows-sandbox.html
