Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSend multipart upload exceeding fileSize limit
-
DeliveryAsync fileFilter delays rejection callback
-
ExploitRace condition resolves before size-limit rejection propagates
-
ExecutionMulter passes file reference to application handler
-
ImpactApplication processes truncated file as accepted upload
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V15 - Secure Coding and Architecture Concurrency control, locking
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires the target application to be configured with BOTH an asynchronous fileFilter callback AND a fileSize limit option in the multer middleware configuration - applications using only one of these two settings are not vulnerable. The race condition is timing-dependent (CVSS AC:H), meaning exploitation is not reliably reproducible on every request and requires favorable scheduling conditions in the Node.js event loop. The CVSS vector PR:N indicates no authentication is required from multer's perspective, but application-level authentication on the upload endpoint would limit the attacker pool to authenticated users. The achieved outcome is limited: the underlying multipart parser truncates the data, so a complete oversized file cannot be delivered. Exploitation is further constrained to versions of multer strictly below 2.3.0. |
| Impact | CVSS 3.1 scores this at 3.7 (Low) with vector AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N. The High Attack Complexity correctly reflects the race condition timing requirement, and the Low integrity impact accurately captures the bounded nature of the bypass - the file data is still truncated by the underlying parser, so the attacker cannot deliver a complete oversized file. No KEV listing and no public exploit or POC have been identified at time of analysis. EPSS data is not present in the provided intelligence. Real-world priority is low: successful exploitation requires both a specific application configuration (async fileFilter and fileSize limit used together) and precise race condition timing, and the achieved impact is a logic bypass rather than code execution, data theft, or denial of service. This is a correctness issue in upload enforcement logic, not a critical attack surface. Organizations with strict file size enforcement as a security control (e.g., preventing malicious payload delivery) should treat this as a medium operational priority despite the low CVSS. |
| Exploit ScenarioDerived | An attacker submits a multipart/form-data upload request containing a file that exceeds the application's configured fileSize limit. Because the application uses an asynchronous fileFilter (e.g., one that queries a database to validate the upload), a race condition between the async callback resolution and the stream size-limit signaling allows multer to pass the file reference to the application before the rejection fires. The file data received is still truncated by busboy at the limit, so the attacker cannot deliver arbitrary-size content, but the application's upload handler processes the request as if the file were accepted. No public POC has been identified at time of analysis. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 28, 2026
Race condition in multer's file stream handling allows uploaded files exceeding the configured fileSize limit to bypass size-limit rejection when an application uses an asynchronous fileFilter in combination with the fileSize limit. All multer versions before 2.3.0 are affected. Practical impact is constrained because the underlying busboy multipart parser still truncates the stream at the configured limit, making this a logic bypass of the rejection mechanism rather than uncontrolled resource consumption or data exfiltration; the fix is available in multer 2.3.0.
RemediationAI
Upgrade multer to version 2.3.0, which resolves the race condition in file stream handling. This is confirmed as the vendor-released fix per the GitHub security advisory at https://github.com/expressjs/multer/security/advisories/GHSA-qvfw-j98x-7q72. If an immediate upgrade is not feasible, a short-term workaround is to convert any asynchronous fileFilter implementations to synchronous callbacks, which eliminates the timing window; note this may require refactoring if the filter performs async I/O such as database lookups. An alternative interim control is to enforce file size limits at the reverse proxy or load balancer layer (e.g., nginx client_max_body_size or an API gateway request size policy) as a defense-in-depth measure, though this does not address the root logic flaw in multer. No known compensating control fully replicates the fix without upgrading.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
multer is a popular Node.js middleware layered on top of busboy for processing multipart/form-data payloads - the standard HTTP encoding for file uploads in Express applications. The vulnerability (CWE-362: Race Condition) arises from a concurrency flaw in how multer coordinates its asynchronous fileFilter callback with its fileSize limit enforcement in the file stream pipeline. When the fileFilter is asynchronous, there is a timing window between when the size limit is reached and when the filter's rejection callback resolves; the race can allow the stream to be handed off to the application before the rejection is propagated. CPE cpe:2.3:a:multer:multer:*:*:*:*:*:*:*:* covers all versions prior to the 2.3.0 fix. The root cause is improper synchronization between asynchronous control-flow and resource-limit enforcement - a classic CWE-362 manifestation in event-loop-based runtimes.
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:H/PR:N/UI:N/S:U/C:N/I:L/A:N
AC:H reflects race condition timing dependency; I:L captures limit-bypass without data exfiltration or resource exhaustion; AV:N because upload endpoint is network-accessible.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
multer is a middleware for handling multipart/form-data in Node.js. When an application uses an asynchronous fileFilter together with the fileSize limit, a race condition in multer's file stream handling can allow a file that exceeds the configured size limit to bypass the size-limit rejection. All versions before 2.3.0 are affected. The impact is limited because the underlying multipart parser still truncates the stream at the size limit, so this is a bypass of the limit rejection rather than uncontrolled resource consumption. The issue is fixed in multer 2.3.0. Upgrade to multer 2.3.0 to remediate.
Blast Radius
ecosystem impact- 32 npm packages depend on multer (17 direct, 15 indirect)
Ecosystem-wide dependent count for version 2.3.0.
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
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Race conditions occur when multiple concurrent requests exploit the brief time gap between checking a condition and acting upon it (TOCTOU - Time of Check, Time of Use).
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
Applications that configure the multer upload middleware (npm package, versions 2.0.0 through 2.4.x) with an asynchronou
Disk space exhaustion in multer 2.2.0-2.3.0 allows a remote unauthenticated attacker to repeatedly start and abort multi
EUVD-2026-67929
GHSA-qvfw-j98x-7q72
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB