Skip to main content

multer CVE-2026-77037

| EUVDEUVD-2026-67928 HIGH
Uncontrolled Resource Consumption (CWE-400)
2026-08-28 openjs GHSA-qfvm-cv95-jqjf
7.5
CVSS 3.1 · Vendor: openjs
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Send repeated aborted multipart/form-data POST requests to upload route
  2. Delivery
    multer DiskStorage opens write stream per request
  3. Exploit
    Client drops connection before stream closes
  4. Install
    multer unlinks file but leaves FD open
  5. C2
    Each iteration leaks one file descriptor
  6. Execute
    OS per-process FD limit exhausted
  7. Impact
    Node.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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

multer 2.2.0 <2.3.0

Affected Packages

npm multer fix: 2.3.0

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

Vendor (openjs) PRIMARY 7.5 HIGH
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
vuln.today AI 7.5 HIGH

Network-reachable upload route requires no credentials; sole impact is availability via FD exhaustion; no confidentiality or integrity effect.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
Red Hat 7.5 HIGH

Primary rating from Vendor (openjs).

CVSS VectorVendor: openjs

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Lifecycle Timeline

2
Patch available
Aug 28, 2026 - 23:03 EUVD
CVE Published
Aug 28, 2026 - 19:44 cve.org
HIGH 7.5

DescriptionCVE.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
† from your stack dependencies † transitive graph · vuln.today resolves 4-path depth
  • 72 npm packages depend on multer (39 direct, 35 indirect)

Ecosystem-wide dependent count for version 2.2.0.

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 73% exploitable
Prevalence
High
dominant Node.js/Express file upload middleware, npm downloads in millions weekly
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA Vendor CIRCL GitHub VulDB

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
High
Technical Impact
Partial

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

Vendor StatusVendor

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy