OpenJS Foundation multer: Unauthenticated process crash via async fileFilter (CVE-2026-113872)
An unauthenticated attacker can crash Node.js applications using multer versions 2.0.0 through 2.4.0 by sending crafted multipart requests that trigger uncaught exceptions in the busboy parser after request teardown.
CVE search metadata
CVE search record: CVE-2026-113872. Severity: high. CVSS: 7.5. KEV: no. Product: multer (2.0.0 to 2.4.0). Brief: OpenJS Foundation multer: Unauthenticated process crash via async fileFilter (CVE-2026-113872). Brief link: https://feed.craftedsignal.io/briefs/2026-10-multer-denial-of-service/
Triage facts
Revision 1- Applicability
- multer (2.0.0 to 2.4.0)
- Evidence
- Unknown
- Severity
- Low
- Action
- Elevated
- Sources
- 4 public sources
- Freshness
- Revision 1Oct 23, 04:18 UTC
- Vulnerabilities
- 1 CVE
- Source quality
- A1Likely
A denial-of-service vulnerability exists in the multer middleware for Node.js (CVE-2026-113872). The vulnerability occurs when multer is configured with an asynchronous fileFilter and processes requests containing multiple files. If an earlier part of the multipart request triggers an error, the request teardown removes event listeners from the underlying busboy parser. If a subsequent asynchronous fileFilter completes after the teardown, it forces the parser to resume processing a truncated or malformed body. This triggers an error on the busboy instance that no longer has an error listener, resulting in an uncaught exception that terminates the Node.js process.
Attack Chain
- Attacker identifies an Express application using
multer(>= 2.0.0, <= 2.4.0) with an asynchronousfileFilter. - Attacker initiates a multipart/form-data request containing at least two file parts.
- Attacker triggers a failure on the first file part (e.g., via the
fileFilterlogic) to initiate the request teardown process. - The application performs teardown, calling
busboy.removeAllListeners(). - The attacker's second, pending
fileFiltercompletes after the teardown occurs. - The
fileStream.resume()call triggers the busboy parser to process the buffered input. - The parser encounters an error (e.g., unexpected end of form) and emits it on the busboy instance.
- Due to the removed listeners, the error becomes an uncaught exception, crashing the Node.js process.
Impact
The vulnerability allows an unauthenticated remote attacker to cause a complete service disruption by crashing the target Node.js process with a single crafted HTTP request.
Recommendation
- Upgrade
multerto version2.5.0or later immediately. - If upgrading is not immediately possible, refactor the
fileFilterto be synchronous and move any asynchronous validation logic into the route handler following the multer middleware.
Immediate actions
Upgrade all Node.js applications using multer to version 2.5.0 or later
Mitigations
Refactor asynchronous fileFilter logic to be synchronous
CVE-2026-113872