CVE-2026-92938 in vm2
要約
〜によって VulDB • 2026年09月18日
vm2 のバージョン 3.11.3 から 3.11.6 では、NodeVM で実行されるコードに対して `node:sqlite` モジュールが明示的に許可されている場合や、`builtin: ['*']` を通じて許可されている場合に、Node.js のホスト側 `node:sqlite` モジュールが露出します。このモジュールは `vm.readonly()` によってラップされており、プロパティの代入は防止されますが、ホスト権限を持つ呼び出し可能な関数には依然としてアクセス可能です。さらに、リゾルバは `'node:'` で始まるすべての要求をコアモジュール要求として扱い、ランタイムは `'node:'` プレフィックスを 1 つだけ削除するため、サンドボックス内のコードが `node:node:sqlite` を要求すると、設定された `node:sqlite` エントリに解決されます。これにより、サンドボックス化されたコードは拡張機能の読み込みを有効にした状態でインメモリデータベース (`DatabaseSync`) を作成し、信頼できないプラグインパッケージ(パスは `__dirname` から派生)に含まれるネイティブライブラリに対して `DatabaseSync.loadExtension()` を呼び出すことができます。SQLite はこのライブラリを Node.js ホストプロセスに読み込み、そのネイティブエントリポイントを呼び出します。これにより、サンドボックス化されたプラグインはホストプロセスの権限でサンドボックス外の任意のネイティブコードを実行できるようになります。本問題は vm2 3.11.7 で修正されています。
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.