Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconSend repeated aborted multipart/form-data POST requests to upload route
-
Deliverymulter DiskStorage opens write stream per request
-
ExploitClient drops connection before stream closes
-
Installmulter unlinks file but leaves FD open
-
C2Each iteration leaks one file descriptor
-
ExecuteOS per-process FD limit exhausted
-
ImpactNode.js process unable to accept new connections - denial of service
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource consumption limits
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The vulnerable code path is triggered exclusively when multer is configured with its built-in DiskStorage engine - applications using MemoryStorage or a custom storage adapter are not affected. The upload route must be network-reachable by the attacker; per the CVSS vector (AV:N, PR:N), no authentication is required if the route is publicly exposed. Exploitation is constrained by the following limiting factors: (1) only DiskStorage configurations are affected, not MemoryStorage or third-party adapters; (2) authentication on the upload route limits the attack surface to credentialed users; (3) the OS-level per-process FD limit determines how many aborted requests are required before the DoS threshold is reached, providing a window for detection via FD monitoring; and (4) the server process must remain running long enough for FD accumulation to reach the limit. No special protocol state or application-specific configuration beyond a reachable multer DiskStorage upload route is required. |
| Impact | The CVSS 3.1 score of 7.5 (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H) accurately characterizes the worst-case exposure: a publicly reachable upload route with no authentication. Real-world risk scales directly with whether the upload endpoint requires authentication - applications that gate uploads behind login materially reduce their exposure. EPSS data was not provided in the intelligence input, so exploitation probability cannot be quantified numerically. KEV status is not confirmed, and no public POC has been identified at time of analysis, meaning this has not demonstrably been weaponized at scale. However, the attack primitive is trivially automatable - any HTTP client capable of sending multipart requests and dropping connections mid-stream can exploit this - which offsets the lack of known POC. The fix is available in multer 2.3.0, making remediation straightforward and the risk window narrow for teams with dependency update pipelines. |
| Exploit ScenarioDerived | An attacker discovers a publicly accessible file upload endpoint in a Node.js application using multer DiskStorage and scripting an HTTP client to send repeated multipart/form-data POST requests that are aborted mid-stream. Each request leaks one file descriptor in the server process; after accumulating enough leaked descriptors to hit the OS process limit, the Node.js process can no longer open new sockets, files, or connections - causing all requests to fail with EMFILE errors and effectively denying service to legitimate users. No public POC has been identified at time of analysis, but the technique requires only standard HTTP tooling. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 28, 2026
File descriptor exhaustion in multer 2.2.0's DiskStorage engine allows remote unauthenticated attackers to cause denial of service by repeatedly sending aborted or malformed multipart upload requests. Each aborted request causes multer to delete the visible file entry while leaving the underlying write file descriptor open, retaining disk blocks until process exit. With no public exploit identified at time of analysis and no CISA KEV listing, this is nonetheless trivially automatable - any publicly exposed upload route using DiskStorage is a viable target.
RemediationAI
Upgrade multer to version 2.3.0, which is the vendor-released patch confirmed by both the CVE description and the OpenJS Foundation advisory at https://github.com/expressjs/multer/security/advisories/GHSA-qfvm-cv95-jqjf. The fix closes the destination write stream on abnormal source termination and defers filesystem cleanup until the stream has confirmed closure, eliminating the FD leak. If an immediate upgrade is blocked by dependency constraints, apply rate limiting on upload endpoints (e.g., via express-rate-limit at 10-20 requests per minute per IP) to slow FD exhaustion - note this does not eliminate the leak and must be tuned to avoid impacting legitimate users. A second compensating control is to restrict upload routes to authenticated sessions, which reduces the attack surface to trusted actors; this trade-off is acceptable only if unauthenticated uploads are not a product requirement. Neither workaround closes the underlying defect; upgrading to multer 2.3.0 is the only complete remediation.
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 Node.js Express/Connect middleware for parsing multipart/form-data payloads, widely used for file uploads. Its DiskStorage engine creates a write stream to a destination path for each incoming upload. The root cause (CWE-400: Uncontrolled Resource Consumption) is an error-path omission: when an upload's source stream terminates abnormally - via client abort or malformed data - multer calls unlink() to remove the destination file but never calls close() or destroy() on the write stream's underlying file descriptor. The unlinked file's inode remains live and its disk blocks stay allocated as long as the open FD exists. CPE string cpe:2.3:a:multer:multer:*:*:*:*:*:*:*:* indicates the issue is scoped to the multer npm package itself. Linux and other POSIX systems enforce per-process FD limits (commonly 1024 soft / 65535 hard for Node.js processes), meaning an attacker can exhaust these limits with a bounded number of crafted requests.
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
Network-reachable upload route requires no credentials; sole impact is availability via FD exhaustion; no confidentiality or integrity effect.
Primary rating from Vendor (openjs).
CVSS VectorVendor: openjs
Lifecycle Timeline
2DescriptionCVE.org
multer is a middleware for handling multipart/form-data in Node.js. In version 2.2.0, when a disk-backed upload is aborted or truncated before the write stream finishes, multer's disk storage engine removes the visible file but does not close the underlying write file descriptor, leaving a deleted but still open descriptor. A remote attacker able to reach an upload route using the built-in disk storage can send repeated aborted or malformed multipart uploads, each one leaking a file descriptor and retaining disk blocks until the process exits, which can exhaust resources and cause a denial of service. The issue is fixed in multer 2.3.0, which closes the destination write stream on abnormal source termination and defers cleanup until the stream has closed. Upgrade to multer 2.3.0 to remediate.
Blast Radius
ecosystem impact- 72 npm packages depend on multer (39 direct, 35 indirect)
Ecosystem-wide dependent count for version 2.2.0.
Articles & Coverage 1
Technical POC Analysis
Bug class: uncontrolled resource consumption (CWE-400), with the advisory also assigning CWE-459 (incomplete cleanup).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
File upload functionality in applications using multer 2.2.0 faces denial-of-service risk from unauthenticated attackers, potentially disrupting business operations that depend on user submissions or file management. The attack is trivial to execute without special tools and directly threatens service availability. Organizations must prioritize mitigation planning immediately to prevent upload service outages.
Rate-limit and throttle upload endpoints to prevent request floods; implement multipart request validation to reject malformed data upstream; configure OS-level file descriptor limits and monitor for exhaustion; deploy reverse-proxy protections with connection limits and inspect for aborted/malformed request patterns.
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
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-67928
GHSA-qfvm-cv95-jqjf
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB