Skip to content

Prototype Pollution Leads to Remote Code Execution in Node.js

Mikhail ShcherbakovMusard Balliu

Mikhail Shcherbakov and Musard Balliu uncover universal Prototype Pollution gadgets within Node.js core and popular NPM packages, achieving RCE across major applications.

Summary

Prototype Pollution Beyond Denial of Service

Prototype pollution in JavaScript applications has often been dismissed as a low-severity flaw resulting merely in property injection or denial of service.

Discovering Universal Gadgets in Node.js Core

Mikhail Shcherbakov and Musard Balliu analyze Node.js core libraries and popular NPM dependencies, mapping out universal gadget chains that convert object property modifications into code execution.

Auditing 15 Popular Applications to Yield 8 RCEs

Applying automated static and dynamic analysis across 15 open-source Node.js applications on GitHub yielded 8 high-impact remote code execution zero-days.

Mitigations and Node.js Architectural Hardening

The researchers discuss recent security enhancements in Node.js, including `--disable-proto` flags and defensive coding patterns to prevent prototype poisoning.

Related talks