Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach upload endpoint using async fileFilter
-
DeliverySend multipart request then abort mid-filter
-
ExploitPending callback resumes torn-down parsing stream
-
Executionbusboy emits error with no listener
-
ImpactUnhandled error event crashes Node process
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Exception handling completeness
|
| Exploitation Conditions | The decisive precondition is explicit in the advisory: the target application must configure multer with an ASYNCHRONOUS fileFilter (a callback-style/async filter). Applications using a synchronous fileFilter are NOT affected, and the issue is independent of the storage engine. The trigger requires the attacker to abort an in-flight multipart request while another file's async fileFilter callback is still pending, so the application must expose a reachable multipart/form-data upload route. No authentication is required (CVSS PR:N; advisory states a single unauthenticated request suffices) and no user interaction is needed. The primary limiting factor is purely the async-fileFilter deployment choice; default multer usage with a synchronous filter eliminates the exposure. |
| Impact | This is a genuine availability risk but a conditional one, and the signals are mostly consistent. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5) correctly reflects a network-reachable, unauthenticated, availability-only impact (C:N/I:N/A:H) - the advisory confirms a single unauthenticated request can crash the Node.js process. The vuln.today decision label is 'this_week', consistent with a serious but non-emergency DoS. No EPSS score was supplied and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation - treat it as a prioritized patch, not an incident. No verified public exploit code was provided; the only references are the GHSA/OpenJSF advisories (advisory pages, not a working PoC). The one material caveat the raw CVSS score hides: exploitability is gated on the application being configured with an asynchronous fileFilter - deployments using a synchronous fileFilter are not affected at all, regardless of CVSS. So the 7.5 applies only to the subset of multer deployments using async filters; the base score does not encode that configuration dependency. |
| Exploit ScenarioDerived | An unauthenticated attacker targets an HTTP endpoint of an Express/Node.js app that uses multer with an asynchronous fileFilter. The attacker sends a multipart/form-data upload with multiple files and aborts the request (e.g., when one file is rejected) while another file's async fileFilter callback is still pending; the pending callback then resumes a parsing stream multer has already torn down, busboy emits an error on a stream with no error listener, and Node raises an unhandled 'error' event that terminates the process. No public working exploit code was identified at time of analysis (only the vendor advisory reference exists). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 22, 2026
Applications that configure the multer upload middleware (npm package, versions 2.0.0 through 2.4.x) with an asynchronous fileFilter can be crashed by a single aborted multipart request, taking down the entire Node.js process. When a request is aborted while one file's async fileFilter callback is still pending, that callback later resumes a parsing stream multer has already torn down, and the underlying busboy parser emits an error on a stream with no remaining error listener, which Node raises as an unhandled 'error' event and exits. The bug is unauthenticated and requires no user interaction (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, 7.5), but it is conditional: uploads using a synchronous fileFilter, and the storage engine choice, do not matter. No public exploit code has been identified at time of analysis, and the issue is fixed in multer 2.5.0.
RemediationAI
Upgrade multer to 2.5.0 or later - this is the vendor-released patch and the only complete fix, as documented in GHSA-q7qp-rjg7-q26m (https://github.com/expressjs/multer/security/advisories/GHSA-q7qp-rjg7-q26m). Because the flaw is only reachable through an asynchronous fileFilter, the vendor-specified workaround for teams that cannot upgrade immediately is to convert every fileFilter in the application to a synchronous implementation, which removes the pending-callback window entirely and eliminates exposure; this workaround carries no functional loss for filter logic that does not need to await I/O, but filters that perform async checks (database lookups, remote validation) must be restructured or moved elsewhere, which may change application behavior. Inventory Node.js services for multer dependency versions in the 2.0.0-2.4.x range, prioritize internet-facing upload endpoints, and note that process-level supervisors or crash-only restarts limit outage duration but do not prevent the denial of service itself.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
multer is Express/Node.js middleware that parses multipart/form-data uploads, delegating the low-level stream parsing to busboy. Applications may supply a fileFilter hook to accept or reject each incoming file; when that hook is asynchronous, multer must wait for the callback before continuing to consume the parser stream. If the client aborts the request (for example after one file is rejected) while another file's async fileFilter is still pending, multer begins tearing down its parsing stream, but the outstanding callback later fires and resumes work against that already-destroyed stream. busboy then emits an 'error' on a stream that no longer has an error listener attached, and because Node.js treats an 'error' event with no listener as fatal, the process terminates. The root cause class is CWE-248 (uncaught exception), with the advisory also tagging CWE-404 (improper resource shutdown/teardown ordering); the practical defect is a lifecycle race between asynchronous filter callbacks and stream teardown, not an input-validation or memory-safety flaw. The trigger specifically requires an asynchronous fileFilter: synchronous filters complete before teardown can occur and are not affected, and the storage engine in use (disk, memory, or otherwise) has no bearing on exposure.
Know when Multer gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Remote unauthenticated single request (AV:N/PR:N/UI:N) reliably crashes the process via attacker-controlled abort (AC:L); impact is availability-only (A:H, C:N/I:N).
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
multer is a middleware for Node.js that handles multipart/form-data file uploads. In versions from 2.0.0 before 2.5.0, when multer is configured with an asynchronous fileFilter, a single request can crash the Node.js process. If the request is aborted while one file's asynchronous fileFilter is still pending, the pending callback later resumes a parsing stream that multer has already torn down, and the underlying parser emits an error on a stream that no longer has an error listener, which Node raises as an unhandled error event so the process exits. Any application using multer with an asynchronous fileFilter is affected regardless of storage engine, while uploads using a synchronous fileFilter are not affected. The issue is fixed in multer 2.5.0, and users should upgrade to 2.5.0 or later. As a workaround, use a synchronous fileFilter.
Technical POC Analysis
Evidence basis: the supplied advisory (GHSA-q7qp-rjg7-q26m) only.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity flaw in the widely used multer upload middleware for Node.js (versions 2.0.0-2.4.x) allows a single aborted upload request to crash the entire application process, causing service outages. The vulnerability is unauthenticated and requires no user interaction, meaning any external actor can trigger it. Leadership should prioritize remediation because the impact is a denial of service affecting all users and potentially disrupting business operations.
No vendor-released patch identified at time of analysis. Interim mitigations include: ensure fileFilter callbacks are synchronous (temporarily, if feasible) to avoid the asynchronous code path that triggers the crash; implement network-level rate limiting and request size limits to reduce the likelihood of aborted uploads; use a process manager (e.g., PM2) to automatically restart the Node.js process after a crash; and monitor for unusual process exits to detect exploitation attempts.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Denial of service in Multer (Express.js multipart/form-data middleware) before version 2.1.1 allows remote unauthenticat
Denial of service in Multer (the Express/Node.js multipart/form-data middleware) before version 2.1.0 lets remote attack
Denial of service in Multer (Express.js multipart/form-data middleware) before version 2.1.0 lets remote unauthenticated
File descriptor exhaustion in multer 2.2.0's DiskStorage engine allows remote unauthenticated attackers to cause denial
Remote denial-of-service in the Node.js multer middleware (all versions before 2.3.0) allows unauthenticated attackers t
Event loop exhaustion in multer (all versions before 2.3.0) allows unauthenticated remote attackers to render a Node.js
Denial of service in the Express.js multer middleware (versions 1.0.0 through 2.1.1 and 3.0.0-alpha.1) allows unauthenti
Denial of service in Multer versions 2.0.0-alpha.1 through 2.1.1 and 3.0.0-alpha.1 allows remote unauthenticated attacke
Disk space exhaustion in multer 2.2.0-2.3.0 allows a remote unauthenticated attacker to repeatedly start and abort multi
Race condition in multer's file stream handling allows uploaded files exceeding the configured fileSize limit to bypass
EUVD-2026-108188
NVD
CVE.org
Vulnrichment
GitHub
VulDB
Exploit-DB