CVE-2020-15168 is a medium-severity (CVSS 5.3) Improper Input Validation vulnerability in node-fetch. A fix is available for node-fetch — see the affected versions and patch details below.
The `size` option isn't honored after following a redirect in node-fetch
EPSS Exploitation Probability
Probability of exploitation in the next 30 days, from FIRST.org EPSS.
How urgent is this, really
Where this sits among everything scored
Real-World Exposure
How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.
node-fetchnpmDescription
Impact
Node Fetch did not honor the size option after following a redirect, which means that when a content size was over the limit, a FetchError would never get thrown and the process would end without failure.
For most people, this fix will have a little or no impact. However, if you are relying on node-fetch to gate files above a size, the impact could be significant, for example: If you don't double-check the size of the data after fetch() has completed, your JS thread could get tied up doing work on a large file (DoS) and/or cost you money in computing.
Patches
We released patched versions for both stable and beta channels:
- For
v2: 2.6.1 - For
v3: 3.0.0-beta.9
Workarounds
None, it is strongly recommended to update as soon as possible.
For more information
If you have any questions or comments about this advisory:
- Open an issue in node-fetch
- Contact one of the core maintainers.
Affected Packages
| Ecosystem | Package | Vulnerable range | Fix |
|---|---|---|---|
| 📦npm | node-fetch | ≥ 2.0.0&&< 2.6.1 | 2.6.1npm install node-fetch@2.6.1 |
| 📦npm | node-fetch | ≥ 3.0.0-beta.1&&< 3.0.0-beta.9 | 3.0.0-beta.9npm install node-fetch@3.0.0-beta.9 |
Affected Products
node-fetchnode-fetch_projectDetection & mitigation playbook
Open-source dependencyDetect
Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for node-fetch, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.
Fix
Update node-fetch to 2.6.1 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms CVE-2020-15168 is resolved across your whole dependency graph.
Workarounds
Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.
Frequently Asked Questions
Is CVE-2020-15168 in your dependencies?
Find it across npm, including transitive dependencies.