body-parser vulnerable to Denial of Service via trailing bytes after a compressed request body
Published 23 Oct 2026 · Updated 23 Oct 2026
Affected packages
- Affected
- >=2.0.0 <2.4.0
- Fixed in
- 2.4.0
npm install body-parser@2.4.0- Affected
- <1.20.9
- Fixed in
- 1.20.9
npm install body-parser@1.20.9Details
Impact
A single request can crash any application using body-parser with default options. When a request carries a Content-Encoding (for example gzip), body-parser pipes it into a decompression stream and, after reading the body, leaves that stream piped with no error listener. A payload of one valid compressed frame followed by trailing bytes decodes and the application responds normally, but the trailing bytes then reach the already-finished decoder, which emits an error that is re-thrown as an uncaught exception and terminates the process. No authentication or matching route is required, since parsing runs before routing.
Patches
Fixed in body-parser 2.4.0 and 1.20.9. Upgrade to one of these versions.
Workarounds
Pass inflate: false to the body-parser middleware if the application does not need to accept compressed request bodies. This rejects encoded requests before any decompression stream is created.
Is GHSA-27r3-jxmh-p828 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 body-parser, and gives you the command that fixes it.
References
- Linkgithub.com/expressjs/body-parser/security/advisories/GHSA-27r3-jxmh-p828
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-111181
- Linkgithub.com/expressjs/body-parser/commit/1260c3845f54502a05a87594f09a334786bb34d7
- Linkgithub.com/expressjs/body-parser/commit/f7075eae3a84c3473ab4bf0a777da28db208e916
- Linkcna.openjsf.org/security-advisories.html
- Packagegithub.com/expressjs/body-parser
- Linkgithub.com/expressjs/body-parser/releases/tag/1.20.9
- Linkgithub.com/expressjs/body-parser/releases/tag/v2.4.0
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.