CVE-2026-100721 vm2 before 3.12.2 Authorization Bypass via Custom Resolver

Critical 9.5 Published Updated

Attackers can escape the vm2 sandbox and execute arbitrary code in the host process if a custom resolver is configured without proper path boundaries.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2026-100721?

CVE-2026-100721 is a critical authentication bypass vulnerability in patriksimek vm2, published on 27 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

vm2 before 3.12.2 contains an authorization bypass in the NodeVM external-module resolver. When an embedder configures `require.external` with a custom resolver (and `context: 'host'`), `LegacyResolver.customResolve` in lib/resolver-compat.js records the resolved module directory in `this.externals` as `new RegExp('^' + escapeRegExp(resolvedPath))`, without requiring a path separator or end-of-string boundary. Untrusted guest code can therefore require the allowlisted module (e.g. `foo`) and then require the absolute path of a non-allowlisted sibling whose path merely shares the resolved prefix (e.g. `.../node_modules/foo2/index.js`); the sibling passes `isPathAllowedForModule` and is loaded through `hostRequire`, so its top-level code runs in the host process before the exports are wrapped with `vm.readonly`, resulting in a sandbox escape and arbitrary code execution in the host context.

Weakness: CWE-863

Which versions are affected by CVE-2026-100721?

2 open source packages ship an affected version, including vm2.

PackageAffectedFixed in
vm2 npmAll versions3.12.2
vm2 npmAll versions3.12.2

How do I fix CVE-2026-100721?

Upgrade vm2 to 3.12.2 or later.

Upgrade, and rotate credentials and sessions that may have been exposed. More about Authentication bypass.

Is CVE-2026-100721 being exploited?

It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-100721 exists.

Public exploit code: 1 proofs of concept on GitHub.

Sources

Also known as CLEANSTART-2026-CN31177, CLSA-2026-1791887363, CLSA-2026-1791888008, ECHO-923f-7c77-29c1, GHSA-5h3f-q97h-ccvc, MINI-52gv-5c3m-r2x9 and 1 more.

Is CVE-2026-100721 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free