CVE-2026-102992 piscina: Prototype-pollution gadget in ThreadPool.options allows RCE via execArgv / loadBalancer / env
Prototype pollution in piscina allows attackers to inject code into worker threads via inherited options, leading to remote code execution.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-102992?
CVE-2026-102992 is a critical code injection vulnerability in piscinajs piscina, published on 30 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
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.
Weakness: CWE-1321
Which versions are affected by CVE-2026-102992?
6 open source packages ship an affected version, including piscina.
| Package | Affected | Fixed in |
|---|---|---|
piscina npm | All versions | 4.9.4 |
piscina npm | All versions | 4.9.4 |
piscina npm | From 5.0.0 | 5.3.2 |
piscina npm | From 5.0.0 | 5.3.2 |
piscina npm | From 6.0.0-rc.1 | 6.0.0-rc.5 |
piscina npm | From 6.0.0-rc.1 | 6.0.0-rc.5 |
How do I fix CVE-2026-102992?
Upgrade piscina to a fixed version for your release line: 4.9.4, 5.3.2 or 6.0.0-rc.5.
Upgrade, and never evaluate templates, expressions or code built from user input. More about Code injection.
Is CVE-2026-102992 being exploited?
It is not confirmed as exploited in the wild, but public exploit code for CVE-2026-102992 exists.
Sources
Also known as AZL-105657, CLSA-2026-1790888307, CLSA-2026-1790937670, CLSA-2026-1791028065, CLSA-2026-1792472733, ECHO-6c5e-2e46-3d72 and 8 more.