As reported by The Hacker News, researchers at Endor Labs have disclosed a critical sandbox escape vulnerability in isolated-vm, a widely adopted Node.js library for executing untrusted JavaScript within V8 Isolates. The flaw — tracked as GHSA-864f-rcv7-6rh4 with no CVE yet assigned — enables code running inside a sandboxed guest isolate to corrupt memory in the host process, potentially escalating to full remote code execution. This is not a minor library bug; it is a fundamental breach of the trust boundary that isolated-vm exists to enforce.
Vulnerability Details
| Identifier | GHSA-864f-rcv7-6rh4 (no CVE assigned at time of disclosure) |
| Severity | Critical — sandbox escape with potential RCE |
| Affected Component | ExternalCopy class, transferList option handling |
| Affected Versions | All versions ≤ 7.0.0 |
| Patched Versions | 7.0.1 and 6.2.0 (backport) |
| Root Cause | Type confusion in serialization/deserialization path |
| Minimum Impact | Reliable controlled-address crash (DoS via SIGSEGV) |
| Maximum Impact | Control-flow hijack of host process — potential RCE |
| Active Exploitation | Not reported in the wild at time of disclosure |
| Weekly npm Downloads | ~1,000,000 |
Why This Matters
Isolated-vm is purpose-built for a specific and high-stakes use case: running untrusted code safely. Organizations use it for code-execution-as-a-service platforms, serverless evaluation engines, browser-based IDE backends, plugin systems, and competitive programming judges. The entire security model rests on the assumption that a V8 Isolate provides an impermeable boundary between guest and host. This vulnerability shatters that assumption.
The attack path is particularly elegant. The researcher began with nothing more than an ivm.Reference — the standard, documented mechanism for granting a sandbox any external capability — and chained a type confusion in the ExternalCopy.transferList handling into a controlled memory write, then escalated from crash to control-flow hijack. This means the exploit does not require misconfiguration or excessive privilege grants. It works against the library's intended, correct usage pattern.
The trust boundary that isolated-vm enforces is not a defense-in-depth layer for most deployments — it is the primary and often only isolation control. When that boundary fails, there is typically no secondary containment.
Who Is Most Exposed
- Multi-tenant code execution platforms — SaaS services that let users submit and run JavaScript server-side are the highest-risk category, as a single malicious tenant could compromise the entire host and pivot to other tenants' data.
- Serverless / FaaS JavaScript runtimes — platforms that use V8 Isolates instead of full container isolation for performance reasons.
- Education and coding challenge platforms — these environments run arbitrary user code by design and frequently rely on isolated-vm as the sandboxing layer.
- Plugin and extension systems — applications that allow third-party JavaScript extensions to run in-process.
Shield53 Recommendations
Immediate Actions
7.0.1 or the backported 6.2.0. If you are on the 7.x branch, move to 7.0.1. If you are pinned to 6.x, move to 6.2.0. Verify the version in your lockfile, not just your package.json.npm ls isolated-vm or use an SCA tool to identify all packages pulling it in.ivm.Reference objects to guest code (nearly all do — this is the standard capability model).Defense-in-Depth Hardening
- Do not treat V8 Isolates as your only boundary. Run untrusted code execution services inside separate containers or microVMs (Firecracker, gVisor) so that a sandbox escape hits a container wall, not your host OS.
- Apply least-privilege capability grants. Audit every
ivm.Referenceyou expose to guest code. Remove any reference that is not strictly necessary for the guest's function. - Implement per-tenant resource isolation. Even with a patched sandbox, separate tenants across different processes or hosts to limit blast radius from future flaws.
- Monitor for anomalous guest behavior. Instrument the host to detect unexpected memory access patterns, abnormal CPU usage, or attempts to access host APIs not explicitly granted.
This vulnerability is a reminder that sandboxing libraries are themselves attack surface. The more critical the boundary they enforce, the more motivated researchers and adversaries will be to break it. Organizations running multi-tenant JavaScript execution should treat this patch as emergency-tier and use the moment to evaluate whether their architecture relies on a single isolation layer where multiple layers are warranted.