GHSA-v422-hmwv-36x6
body-parser vulnerable to denial of service when invalid limit value silently disables size enforcement
Packages
| Ecosystem | Package | Affected | Fixed in |
|---|---|---|---|
| npm | body-parser | < 1.20.6 | 1.20.6 |
| npm | body-parser | >= 2.0.0, < 2.3.0 | 2.3.0 |
Details
As written in the advisory (Markdown source, shown as plain text).
### Impact
When body-parser is configured with an invalid `limit` option value, such as an unparseable string or `NaN`, `bytes.parse()` returns `null` and the request body size check is silently skipped. Applications that rely on `limit` as their primary safeguard against oversized request bodies will accept arbitrarily large payloads, leading to excessive memory and CPU usage and denial of service.
This issue affects applications that pass a programmatically computed or user-configurable value to the `limit` option without validating it first.
### Patches
This issue is fixed in [[email protected]](https://github.com/expressjs/body-parser/releases/tag/v2.3.0) and [[email protected]](https://github.com/expressjs/body-parser/releases/tag/v1.20.6) via [#698](https://github.com/expressjs/body-parser/pull/698). After the fix, invalid `limit` values throw a clear error at parser construction time instead of silently disabling enforcement. `null` and `undefined` continue to fall back to the default limit (`100kb`).
### Workarounds
Validate `limit` before passing it to body-parser. For example, parse the value with [`bytes.parse()`](https://github.com/visionmedia/bytes.js) at startup and reject any configuration where it returns `null` or a non-finite number.
### References
- [#698](https://github.com/expressjs/body-parser/pull/698): fix PR
- [bytes.js](https://github.com/visionmedia/bytes.js): limit parser
References
External links from the advisory. They lead to third-party sites.
- https://github.com/expressjs/body-parser/security/advisories/GHSA-v422-hmwv-36x6
- https://nvd.nist.gov/vuln/detail/CVE-2026-12590
- https://github.com/expressjs/body-parser/pull/698
- https://github.com/expressjs/body-parser/pull/741
- https://github.com/expressjs/body-parser/commit/2322e111cc321413ec2b7b76d01be533d3de9d7d
- https://github.com/expressjs/body-parser/commit/3492672eee593d5c158f239b6e9115498a5dbeac
- https://cna.openjsf.org/security-advisories.html
- https://github.com/expressjs/body-parser
- https://github.com/expressjs/body-parser/releases/tag/1.20.6
- https://github.com/expressjs/body-parser/releases/tag/v2.3.0