CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-77078

CVE-2026-77078: Remote Denial of Service in Multer Middleware via Array Suffix Handling

Alon Barad
Alon Barad
Software Engineer

Sep 9, 2026·4 min read·32 visits

Executive Summary (TL;DR)

Unauthenticated remote attackers can crash Express.js applications using multer < 2.3.0 by sending crafted multipart requests that trigger an unhandled RangeError in the V8 engine.

CVE-2026-77078 is a critical denial of service vulnerability in the multer Node.js package, allowing unauthenticated remote attackers to crash the runtime process using a single crafted multipart/form-data HTTP payload.

Vulnerability Overview

The multer middleware is a highly utilized package within the Node.js ecosystem for handling multipart/form-data payloads, primarily used in Express-based web applications. This middleware exposes a substantial attack surface because it processes untrusted file uploads and text field inputs directly from HTTP request streams. A security flaw exists in how the library accumulates multipart field parameters during asynchronous stream parsing.\n\nUnauthenticated remote attackers can leverage this component's parsing behavior to trigger a process-wide Denial of Service (DoS) using minimal network resources. By exploiting this issue, attackers can force target servers offline with a single, low-overhead HTTP request, creating severe operational availability risks.

Root Cause Analysis

The flaw lies in the interaction between multer's field accumulation mechanism and the V8 JavaScript engine's internal array limits. When parsing multipart payloads, the middleware uses bracket-notation syntax to construct structured data objects or arrays from incoming field names, such as converting items[] into an active array structure.\n\nThe V8 engine enforces a strict physical boundary of 4,294,967,295 elements for standard array allocations. If an application receives a field explicitly indexed at this limit followed by a push operation, the engine throws a synchronous RangeError: Invalid array length exception. Because the parsing flow operates inside an asynchronous stream lifecycle, the exception cannot be caught by standard outer try-catch blocks. The uncaught error propagates to the top of the event loop, causing the Node.js runtime to terminate immediately.

Code Analysis

The vulnerability resides in the make-middleware.js module where fields are appended dynamically. The application processes each field using the appendField utility but fails to enclose this call within any error-handling routine.\n\njavascript\n// Vulnerable implementation in lib/make-middleware.js\nappendField(req.body, fieldname, value)\n\n\nThe patch introduces structured exception handling to intercept failures arising from invalid field mutations. This prevents the runtime from encountering unhandled errors during stream processing.\n\njavascript\n// Patched implementation in lib/make-middleware.js\ntry {\n appendField(req.body, fieldname, value)\n} catch {\n return abortWithCode('INVALID_FIELD_NAME', fieldname)\n}\n\n\nThe error definition mapping is updated in lib/multer-error.js to map the INVALID_FIELD_NAME code to a descriptive string value.\n\njavascript\n// Patched implementation in lib/multer-error.js\nLIMIT_FIELD_ARRAY_INDEX: 'Field name array index too large',\nSTREAM_DESTROYED: 'File stream was destroyed',\nINVALID_FIELD_NAME: 'Invalid field name'\n\n\nThis structural modification is robust as it converts engine-level runtime crashes into recoverable middleware validation errors.

Exploitation Methodology

Exploitation requires sending a single, malformed multipart/form-data POST request containing two specifically structured fields. The first field allocates a sparse array at the boundary index of $2^{32} - 2$, which forces the internal JavaScript array length to $2^{32} - 1$. The second field uses empty bracket syntax ([]) to append a new element to the same array name.\n\nmermaid\ngraph LR\n A["Attacker Payload"] --> B["First Part: items[4294967294]='x'"]\n B --> C["Second Part: items[]='y'"]\n C --> D["V8 Engine Array Resize"]\n D --> E["Uncaught RangeError"]\n E --> F["Node.js Process Crash"]\n\n\nBecause sparse arrays do not allocate contiguous memory in V8, the initial allocation does not trigger an out-of-memory error. This ensures the attack remains extremely low-overhead, executing rapidly and consuming negligible network bandwidth. No authentication is necessary to reach the parsing logic if the target endpoint accepts public file uploads or form submissions.

Impact Assessment

The vulnerability has a CVSS v3.1 base score of 7.5, reflecting a high-severity availability impact. An unauthenticated attacker can consistently terminate the target server process, resulting in persistent denial of service.\n\nIf the application is not configured with automatic process managers like PM2 or orchestrators like Kubernetes, manual administrator intervention is required to restart the service. Even with process auto-restart configurations, continuous exploitation can keep the server in a perpetual crash loop, consuming system resources and preventing legitimate traffic from being served.

Remediation & Patching

The primary solution is to upgrade multer to version 2.3.0 or later, which wraps appendField logic in an appropriate error handling wrapper. For deployments unable to patch immediately, Web Application Firewalls (WAFs) should be configured to drop requests with field names containing excessively large array indices.\n\nAdditionally, ensure that the Node.js application is executed within a robust runtime supervisor such as systemd or container orchestration environments to guarantee automatic service recovery.

Official Patches

ExpressJS ProjectOfficial commit fixing the unhandled RangeError crash

Fix Analysis (1)

Technical Appendix

CVSS Score
7.5/ 10
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
EPSS Probability
0.29%
Top 79% most exploited
15,000
via Shodan

Affected Systems

Node.js applications running multer versions prior to 2.3.0

Affected Versions Detail

Product
Affected Versions
Fixed Version
multer
ExpressJS Project
< 2.3.02.3.0
AttributeDetail
CWE IDCWE-248 (Uncaught Exception)
Attack VectorNetwork (AV:N)
CVSS Severity7.5 (High)
EPSS Score0.00291 (Percentile: 21.34%)
Impact TypeDenial of Service (DoS) via Process Termination
Exploit StatusProof of Concept (PoC) Available
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1499Endpoint Denial of Service
Impact
CWE-248
Uncaught Exception

The product does not handle or incorrectly handles an exceptional condition, leading to an uncaught exception that causes program termination.

Known Exploits & Detection

GitHub Security AdvisoryVerification script details and crash logic mapping

Vulnerability Timeline

Security Advisory Published
2026-08-28
Vulnerability Patched in Version 2.3.0
2026-08-28
CVE-2026-77078 Formally Assigned
2026-08-28
NVD Analysis Completed
2026-09-02

References & Sources

  • [1]GitHub Security Advisory GHSA-wc9g-mqfw-jrwm
  • [2]NVD CVE-2026-77078 Detail
  • [3]CVE-2026-77078 Record
  • [4]OpenJS Foundation Security Advisories
  • [5]Official Fix Commit
  • [6]Official v2.3.0 Release Tag

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•30 minutes ago•CVE-2026-113717
2.3

CVE-2026-113717: Package Digest Verification Bypass in virtualenv Pip Seeder

A verification bypass vulnerability in virtualenv allows unverified Python wheel installation when using pip seeding with the download flag. Affected versions fail to perform SHA-256 digest validation against PyPI metadata before invoking pip.

Alon Barad
Alon Barad
1 views•5 min read
•about 2 hours ago•CVE-2026-113713
4.4

CVE-2026-113713: Insecure Temporary File Symlink Handling in PyPA virtualenv

Insecure temporary file usage (CWE-377) in virtualenv app-data seeder creates dangling symlinks pointing to deleted temporary directories, allowing local attackers on shared systems to execute arbitrary code.

Amit Schendel
Amit Schendel
4 views•4 min read
•about 3 hours ago•CVE-2026-112937
6.1

CVE-2026-112937: Arbitrary Directory Deletion via TOCTOU Race Condition in filelock ReadWriteLock

A Time-of-Check Time-of-Use (TOCTOU) race condition in the Python `filelock` library (versions 4.1.0 to 4.2.0) allows local unprivileged attackers to cause arbitrary directory deletion by swapping file system targets during lock cleanup or dead owner sweeps.

Alon Barad
Alon Barad
6 views•5 min read
•about 4 hours ago•CVE-2026-112906
4.7

CVE-2026-112906: Mutual Exclusion Bypass via Inode Recycling and Time Tracking Race in filelock

A local race condition and mutual exclusion bypass vulnerability exists in filelock versions 4.1.0 through 4.2.0. On Linux filesystems with rapid inode reuse, a local attacker can manipulate modification timestamps and lock files to cause waiting processes to falsely evict active soft lock markers.

Amit Schendel
Amit Schendel
9 views•6 min read
•about 5 hours ago•CVE-2026-114055
7.5

CVE-2026-114055: Uncontrolled Resource Consumption in vLLM via Unvalidated Multimodal Kwargs

vLLM prior to version 0.31.0 contains an uncontrolled resource consumption vulnerability (CWE-400) in its HTTP API request handling logic. Unauthenticated remote attackers can transmit per-request keyword arguments (`mm_processor_kwargs` and `media_io_kwargs`) that are passed directly into internal multimodal preprocessing pipelines, causing CPU/GPU memory exhaustion and crashing the engine process.

Amit Schendel
Amit Schendel
8 views•5 min read
•about 6 hours ago•CVE-2026-62204
6.6

CVE-2026-62204: Arbitrary Bazaar Package Overwrite in SiYuan via Parameter Mismatch

An insufficient verification of data authenticity vulnerability in SiYuan prior to version 3.7.4 allows an attacker to overwrite arbitrary installed marketplace packages (plugins, widgets, themes, and templates). By providing a mismatched package name and package archive repository URL during a Bazaar installation request, arbitrary file write into trusted plugin directories can be achieved, enabling persistence and execution across application restarts.

Alon Barad
Alon Barad
7 views•5 min read