Skip to main content
← All vulnerabilities
CVE-2026-102992GHSA-67C8-PQHQ-4RMX

piscina: Prototype-pollution gadget in ThreadPool.options allows RCE via execArgv / loadBalancer / env

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 4.9.4, 5.3.2, 6.0.0-rc.5
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: no
  • Technical impact: total

Summary

piscina is a node.js worker pool implementation. Prior to 4.9.4, 5.3.2, and 6.0.0-rc.5, Piscina stores ThreadPool.options in src/index.ts as a plain object that inherits from Object.prototype. Applications with a separate prototype-pollution primitive can therefore supply inherited values for security-sensitive options that do not have own defaults. An inherited execArgv value is passed to the Node.js Worker constructor and can preload attacker-controlled code in worker threads, an inherited loadBalancer function can execute during task scheduling, and inherited env values can alter worker environments. This issue is fixed in versions 4.9.4, 5.3.2, and 6.0.0-rc.5.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: no · Technical impact: total

  3. Record last updated

Affected versions

  • piscinajs piscina

    fixed in 4.9.4; From 5.0.0 · fixed in 5.3.2; From 6.0.0-rc.1 · fixed in 6.0.0-rc.5

  • piscinanpm

    From 5.0.0 · fixed in 5.3.2

  • piscinanpm

    fixed in 4.9.4

  • piscinanpm

    From 6.0.0-rc.1 · fixed in 6.0.0-rc.5

References 8

GitHub · piscinajs/piscina