tinypool

Ecosystem: npm

Downloads: 221.33 Mln

Vulnerabilities from the last (months)
  • 2CriticalAffects 2 versions
  • 0HighAffects 0 versions
  • 0MediumAffects 0 versions
  • 0ModerateAffects 0 versions
  • 0LowAffects 0 versions
Severity distribution (all time)
2vulnerabilities
  • Critical2 (100.0%)
  • High0 (0.0%)
  • Medium0 (0.0%)
  • Moderate0 (0.0%)
  • Low0 (0.0%)

Monthly breakdown

  • 2 vulnerabilities
    • Critical: 2
    • High: 0
    • Medium: 0
    • Moderate: 0
    • Low: 0

Vulnerabilities (2)

Known vulnerabilities affecting tinypool, based on data from OSV.

Vulnerabilities affecting tinypool
IDSeveritySummaryAffected versionsPublishedSource
GHSA-5gmw-xhrv-c9v3CriticalTinypool: Prototype Pollution gadget in worker options leads to Remote Code Execution`tinypool` passes worker options to `new Worker()` by reading them off a plain object whose prototype is `Object.prototype`. Options the application did not set are resolved through the prototype chain and then passed explicitly to `worker_threads.Worker`. Node core ignores `Worker` options inherited from `Object.prototype`. By reading them and passing them explicitly, tinypool re-materialises them as own properties and defeats that protection. Two keys reach code execution: 1. **`execArgv`** — polluting `Object.prototype.execArgv = ['--require', '/path/to/attacker.js']` causes every pool
  • < 2.1.1
GitHub (opens in a new tab)
GHSA-85c8-ppgw-ccprCriticalTinypool: Prototype Pollution Gadget to RCE in run() options`tinypool` is a fork of `piscina` and inherited the same prototype-pollution surface. When `pool.run(task, options)` is called, the `filename` option is read from the provided `options` object. If that object does not have an own `filename` property, the lookup falls through to `Object.prototype`. An attacker who can pollute `Object.prototype.filename` (for example, via a vulnerable `lodash.merge`, `qs.parse`, or similar elsewhere in the application) can make tinypool load and execute an attacker-controlled worker module. This is the tinypool counterpart to the piscina root discovery [GHSA-x
  • < 2.1.2
GitHub (opens in a new tab)
  • GHSA-5gmw-xhrv-c9v3Critical
    Tinypool: Prototype Pollution gadget in worker options leads to Remote Code Execution
    • < 2.1.1

    `tinypool` passes worker options to `new Worker()` by reading them off a plain object whose prototype is `Object.prototype`. Options the application did not set are resolved through the prototype chain and then passed explicitly to `worker_threads.Worker`. Node core ignores `Worker` options inherited from `Object.prototype`. By reading them and passing them explicitly, tinypool re-materialises them as own properties and defeats that protection. Two keys reach code execution: 1. **`execArgv`** — polluting `Object.prototype.execArgv = ['--require', '/path/to/attacker.js']` causes every pool

    CVE: CVE-2026-104848

  • GHSA-85c8-ppgw-ccprCritical
    Tinypool: Prototype Pollution Gadget to RCE in run() options
    • < 2.1.2

    `tinypool` is a fork of `piscina` and inherited the same prototype-pollution surface. When `pool.run(task, options)` is called, the `filename` option is read from the provided `options` object. If that object does not have an own `filename` property, the lookup falls through to `Object.prototype`. An attacker who can pollute `Object.prototype.filename` (for example, via a vulnerable `lodash.merge`, `qs.parse`, or similar elsewhere in the application) can make tinypool load and execute an attacker-controlled worker module. This is the tinypool counterpart to the piscina root discovery [GHSA-x

    CVE: CVE-2026-104849

Showing 1-2 of 2 vulnerabilities