vm2 において、以前の脆弱性修正をバイパスしてサンドボックス外でコードを実行できる問題が報告された。ホスト側の Promise が拒否(reject)された際の処理に不備があり、Function.prototype.call や apply を介することで保護機能を回避できる。これにより、サンドボックス内のコードからホスト側の Node.js プロセスへ直接アクセスし、任意のコマンドを実行することが可能となる。概念実証(PoC)コードが公開されており、悪用が容易かつ影響が極めて大きい。
対象ソフト
vm2 は、信頼できない JavaScript コードを Node.js の隔離された環境(サンドボックス)で安全に実行するためのライブラリである。
影響
攻撃者は隔離環境を完全に脱出し、ホストプロセスの権限で任意の OS コマンドを実行できる。これにより、機密情報の窃取、ファイルの改ざん、システムの完全な制御奪取を招く恐れがある。
対応策
vm2 をバージョン 3.11.7 以降にアップグレードすること。