何が起きたか
vm2のNodeVMサンドボックスは、'https'組み込みモジュールを許可するように設定された場合、特定のメソッド呼び出しが読み取り専用ラッパーをバイパスし、ライブホストオブジェクトに直接転送されるため、サンドボックス化されたコードにホストの実際のhttps.globalAgentオブジェクトをさらされることはなく、分離されたプロキシの代わりに。
なぜ重要か
vm2は、LLM生成またはユーザー提出されたコードをサンドボックス化するために、JavaScriptベースのAIエージェントおよびコードインタープリターツールのいくつかで使用される一般的なビルディングブロックである; サンドボックスのホストオブジェクトリークは、エージェント的なコード実行機能が依存する分離保証を弱体化させ、エージェントのコード実行サンドボックスからホストプロセスへの権限昇格またはラテラルムーブメントを有効化する可能性があります。
攻撃経路
NodeVMがrequire('https')を明示的に許可するように設定された場合、組み込みモジュールローダーはホストモジュールを読み取り専用プロキシで折り返しますが、Agent.prototype.on()などのメソッド呼び出しは、サンドボックス化されたコピーではなく、基になる実際のホストオブジェクトに転送され、ホストプロセスのライブhttps.globalAgentをサンドボックス化/信頼されていないコードに露出させ、さらなるサンドボックス脱出プリミティブを可能にします。
影響を受けるシステム
vm2バージョン3.11.3から3.11.6
緩和策
vm2 3.11.8以降にアップグレード (これはこれと12の関連サンドボックス脱出CVEを解決します)。vm2の保守者はまた、同一プロセスJSサンドボックスを唯一のセキュリティ境界として避けることを推奨 — LLMエージェント生成スクリプトなどの真に信頼されていないコード用に別々のプロセス/コンテナ/VMを使用。