Use of Insufficiently Random Values in undici
### Impact [Undici `fetch()` uses Math.random()](https://github.com/nodejs/undici/blob/8b06b8250907d92fead664b3368f1d2aa27c1f35/lib/web/fetch/body.js#L113) 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
describes (1)
Related CVEs.
| ID | severity | exploitable | ||
|---|---|---|---|---|
| CVE-2025-22150US | —OT elevated | — | ||
Undici is an HTTP/1.1 client. Starting in version 4.5.0 and prior to versions 5.28.5, 6.21.1, and 7.2.3, undici uses `Math.random()` to choose the boundary for a multipart/form-dat… | ||||
references
External citations — patches, advisories, analysis.
- https://blog.securityevaluators.com/hacking-the-javascript-lottery-80cc437e3b7fWEB
- https://github.com/nodejs/undiciPACKAGE
- https://github.com/nodejs/undici/blob/8b06b8250907d92fead664b3368f1d2aa27c1f35/lib/web/fetch/body.js#L113WEB
- https://github.com/nodejs/undici/commit/711e20772764c29f6622ddc937c63b6eefdf07d0WEB
- https://github.com/nodejs/undici/commit/c2d78cd19fe4f4c621424491e26ce299e65e934aWEB
- https://github.com/nodejs/undici/commit/c3acc6050b781b827d80c86cbbab34f14458d385WEB
- https://github.com/nodejs/undici/security/advisories/GHSA-c76h-2ccp-4975WEB
- https://hackerone.com/reports/2913312WEB
Advisories like this name the exposed products attackers go after on your perimeter. See what is exposed on your perimeter with a free passive scan.
Free scan