Use of Insufficiently Random Values in undici
Published 21 Jan 2025 · Updated 10 Sept 2026
Affected packages
- Affected
- >=4.5.0 <5.28.5
- Fixed in
- 5.28.5
npm install undici@5.28.5- Affected
- >=6.0.0 <6.21.1
- Fixed in
- 6.21.1
npm install undici@6.21.1- Affected
- >=7.0.0 <7.2.3
- Fixed in
- 7.2.3
npm install undici@7.2.3Details
Impact
Undici `fetch()` uses Math.random() to choose the boundary for a multipart/form-data request. It is known that the output of Math.random() can be predicted if several of its generated values are known.
If there is a mechanism in an app that sends multipart requests to an attacker-controlled website, they can use this to leak the necessary values. Therefore, An attacker can tamper with the requests going to the backend APIs if certain conditions are met.
Patches
This is fixed in 5.28.5; 6.21.1; 7.2.3.
Workarounds
Do not issue multipart requests to attacker controlled servers.
References
- https://hackerone.com/reports/2913312
- https://blog.securityevaluators.com/hacking-the-javascript-lottery-80cc437e3b7f
Is GHSA-c76h-2ccp-4975 in any of your client repos?
Checking one package by hand is fine. Checking it across forty client projects is not. NPMscan reads the lockfiles in every GitHub repo you pick, finds each project with an affected undici, and gives you the command that fixes it.
References
- Linkgithub.com/nodejs/undici/security/advisories/GHSA-c76h-2ccp-4975
- Advisorynvd.nist.gov/vuln/detail/CVE-2025-22150
- Linkgithub.com/nodejs/undici/commit/711e20772764c29f6622ddc937c63b6eefdf07d0
- Linkgithub.com/nodejs/undici/commit/c2d78cd19fe4f4c621424491e26ce299e65e934a
- Linkgithub.com/nodejs/undici/commit/c3acc6050b781b827d80c86cbbab34f14458d385
- Linkhackerone.com/reports/2913312
- Linkblog.securityevaluators.com/hacking-the-javascript-lottery-80cc437e3b7f
- Packagegithub.com/nodejs/undici
- Linkgithub.com/nodejs/undici/blob/8b06b8250907d92fead664b3368f1d2aa27c1f35/lib/web/fetch/body.js#L113
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.