Advisory Database
  • Advisories
  • Dependency Scanning
  1. npm
  2. ›
  3. piscina
  4. ›
  5. CVE-2026-55388

CVE-2026-55388: piscina: Prototype Pollution Gadget → RCE via inherited options.filename

June 18, 2026

piscina’s constructor and run() paths read the filename option via plain member access:

// dist/index.js line 92 (constructor)
const filename = options.filename
? (0, common_1.maybeFileURLToPath)(options.filename)
: null;
this.options = { ...kDefaultOptions, ...options, filename, maxQueue: 0 };

// dist/index.js line 616 (run())
run(task, options = kDefaultRunOptions) {
if (options === null || typeof options !== 'object') {
return Promise.reject(new TypeError('options must be an object'));
}
const { transferList, filename, name, signal } = options;

Both reads fall through the prototype chain when the caller’s options object doesn’t have filename as an own property. When Object.prototype.filename is polluted upstream — by any of the well-documented PP-source CVEs (lodash<4.17.13, qs<6.10.3, set-value<4.1.0, minimist<1.2.6, deepmerge<4.2.2, and others) — the inherited value flows to worker_threads.Worker import and the attacker’s .mjs runs in the worker.

Subtlety: calling pool.run(task) with no second arg uses kDefaultRunOptions which has filename: null as an OWN property — that path DOES NOT fire. The vulnerable shape is when the caller passes their own options object (commonly {signal: ac.signal} for abort support, {name: ...} for task labelling, etc.). These caller-built options objects inherit from Object.prototype unless the caller explicitly uses Object.create(null).

References

  • github.com/advisories/GHSA-x9g3-xrwr-cwfg
  • github.com/piscinajs/piscina/security/advisories/GHSA-x9g3-xrwr-cwfg
  • nvd.nist.gov/vuln/detail/CVE-2026-55388

Code Behaviors & Features

Detect and mitigate CVE-2026-55388 with GitLab Dependency Scanning

Secure your software supply chain by verifying that all open source dependencies used in your projects contain no disclosed vulnerabilities. Dependency Scanning using SBOM also detects vulnerabilities from proprietary advisories that this site does not include. Learn more about Dependency Scanning using SBOM →

Affected versions

All versions before 4.9.3, all versions starting from 5.0.0-alpha.0 before 5.2.0, all versions starting from 6.0.0-rc.1 before 6.0.0-rc.2

Fixed versions

  • 4.9.3
  • 5.2.0
  • 6.0.0-rc.2

Solution

Upgrade to versions 4.9.3, 5.2.0, 6.0.0-rc.2 or above.

Impact 8.1 HIGH

CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

Learn more about CVSS

Weakness

  • CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')
  • CWE-94: Improper Control of Generation of Code ('Code Injection')

Source file

npm/piscina/CVE-2026-55388.yml

Spotted a mistake? Edit the file on GitLab.

  • Site Repo
  • About GitLab
  • Terms
  • Privacy Statement
  • Contact

Page generated Sun, 08 Nov 2026 00:16:55 +0000.