CVE-2026-92938: vm2 allows a sandboxed plugin to execute native code through `node:sqlite`
vm2 3.11.6 exposes Node.js’s host node:sqlite module to NodeVM code when that builtin is allowed explicitly or through builtin: ['*']. The module is wrapped as read-only, but callable methods retain host-process authority. A sandboxed plugin can construct an in-memory database with extension loading enabled and call DatabaseSync.loadExtension() on a native library bundled in the plugin directory.
SQLite loads the library into the Node.js host process and invokes its native extension entry point. This gives the untrusted plugin arbitrary native code execution outside the sandbox.
The exploit needs only the node:sqlite builtin and a compatible native library already present in the untrusted plugin package. It does not require fs, process, module, child_process, worker_threads, vm, inspector, vm2 nesting, or an existing database file.
References
- github.com/advisories/GHSA-6w8r-xxw2-g3hx
- github.com/patriksimek/vm2/commit/aa146a77f859325e079f3bfbfe6d8309af483daa
- github.com/patriksimek/vm2/releases/tag/v3.11.7
- github.com/patriksimek/vm2/security/advisories/GHSA-6w8r-xxw2-g3hx
- nvd.nist.gov/vuln/detail/CVE-2026-92938
- www.vulncheck.com/advisories/vm2-3.11.3-through-3.11.6-remote-code-execution-via-node-sqlite
Code Behaviors & Features
Detect and mitigate CVE-2026-92938 with GitLab Dependency Scanning
Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Learn more about Dependency Scanning →