Skip to main content

multer EUVDEUVD-2026-67929

| CVE-2026-77063 LOW
Race Condition (CWE-362)
2026-08-28 openjs GHSA-qvfw-j98x-7q72
3.7
CVSS 3.1 · Vendor: openjs
View

Attack ChainAIDerived

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

  1. Access
    Send multipart upload exceeding fileSize limit
  2. Delivery
    Async fileFilter delays rejection callback
  3. Exploit
    Race condition resolves before size-limit rejection propagates
  4. Execution
    Multer passes file reference to application handler
  5. Impact
    Application 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.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

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

multer 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 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

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

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.

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

Primary rating from Vendor (openjs).

CVSS VectorVendor: openjs

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

Lifecycle Timeline

2
Patch available
Aug 28, 2026 - 23:03 EUVD
CVE Published
Aug 28, 2026 - 19:54 cve.org
LOW 3.7

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

Ecosystem-wide dependent count for version 2.3.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 93% exploitable
Prevalence
High
Dominant file upload middleware in Express.js ecosystem
Threat Intel
1
1 source
Social Media
1
Sightings
Data Quality
6 sources
Confidence: High

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 LOW
CISA KEV No
Public POC No
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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

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).

More in Multer

View all
CVE-2026-3520 HIGH
8.7 Mar 04

Denial of service in Multer (Express.js multipart/form-data middleware) before version 2.1.1 allows remote unauthenticat

CVE-2026-3304 HIGH
8.7 Feb 27

Denial of service in Multer (the Express/Node.js multipart/form-data middleware) before version 2.1.0 lets remote attack

CVE-2026-2359 HIGH
8.7 Feb 27

Denial of service in Multer (Express.js multipart/form-data middleware) before version 2.1.0 lets remote unauthenticated

CVE-2026-77037 HIGH
7.5 Aug 28

File descriptor exhaustion in multer 2.2.0's DiskStorage engine allows remote unauthenticated attackers to cause denial

CVE-2026-77078 HIGH
7.5 Aug 28

Remote denial-of-service in the Node.js multer middleware (all versions before 2.3.0) allows unauthenticated attackers t

CVE-2026-82333 HIGH
7.5 Aug 28

Event loop exhaustion in multer (all versions before 2.3.0) allows unauthenticated remote attackers to render a Node.js

CVE-2026-5079 HIGH
7.5 Jun 15

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

CVE-2026-5038 HIGH
7.5 Jun 15

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

CVE-2026-113872 HIGH
7.5 Oct 22

Applications that configure the multer upload middleware (npm package, versions 2.0.0 through 2.4.x) with an asynchronou

CVE-2026-88932 MEDIUM POC
5.3 Sep 14

Disk space exhaustion in multer 2.2.0-2.3.0 allows a remote unauthenticated attacker to repeatedly start and abort multi

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