multer vulnerable to Denial of Service via a pending asynchronous fileFilter after request teardown
Published 23 Oct 2026 · Updated 23 Oct 2026
Affected package
- Affected
- >=2.0.0 <2.5.0
- Fixed in
- 2.5.0
npm install multer@2.5.0Details
Impact
When multer is configured with an asynchronous fileFilter, a single request can crash the Node.js process. If a request is aborted (for example when one file is rejected) while another file's async fileFilter is still pending, the pending callback later resumes a parsing stream that multer has already torn down. busboy then emits an error on a stream that no longer has an error listener, which Node raises as an unhandled 'error' event, and the process exits. A single unauthenticated request is enough, so any application using multer with an asynchronous fileFilter is affected, regardless of storage engine. Uploads using a synchronous fileFilter are not affected.
Patches
Users should upgrade to multer 2.5.0 or later.
Workarounds
Use a synchronous fileFilter.
Is GHSA-q7qp-rjg7-q26m 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 multer, and gives you the command that fixes it.
References
- Linkgithub.com/expressjs/multer/security/advisories/GHSA-q7qp-rjg7-q26m
- Advisorynvd.nist.gov/vuln/detail/CVE-2026-113872
- Linkgithub.com/expressjs/multer/commit/80a2d9df1dfd63b5fab631b8b9966164ed647adf
- Linkcna.openjsf.org/security-advisories.html
- Packagegithub.com/expressjs/multer
- Linkgithub.com/expressjs/multer/releases/tag/v2.5.0
Advisory data from OSV.dev (opens OSV.dev in a new tab), refreshed daily.