CVE-2025-47944
High · 7.5CVSS
7.5
EPSS
0.8%
Published
May 19, 2025
CISA due date
—
Cloudanix analysis
A flaw in a common file-upload component can let someone crash affected web applications by sending a broken upload request.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- High
- Patch risk
- High
What it actually does
CVE-2025-47944 is a denial-of-service flaw in Multer, a Node.js middleware commonly used with Express applications to process multipart/form-data file uploads. Affected versions starting at 1.4.4-lts.1 and before 2.0.0 can throw an unhandled exception when parsing a malformed multipart upload request. Because the exception is not safely handled by the library, the Node.js process may terminate, making the application unavailable until the process is restarted by a supervisor, container orchestrator, or manual intervention. The impact is availability-only: it does not directly provide code execution, data disclosure, authentication bypass, or data modification.
Why it matters to the business
An unauthenticated remote attacker can crash web services that expose file-upload endpoints using vulnerable Multer versions. For businesses, this can mean application outages, failed uploads, interrupted user workflows, degraded API availability, increased support load, and potential cascading failures if the crashed process is part of a larger service dependency chain. The CVSS score of 7.5 reflects high availability impact, but the current EPSS value is low and it is not listed in CISA KEV, so prioritization should focus on internet-facing upload functionality and critical services rather than assuming active mass exploitation.
How an attack unfolds
An attacker first identifies an HTTP endpoint that accepts multipart/form-data uploads, such as a file upload, image upload, import, attachment, or form submission feature backed by Multer. The attacker then sends a specially malformed multipart request that violates parser expectations in the affected Multer version. When the vulnerable code attempts to parse the request, it triggers an exception path that is not properly handled. In a typical Node.js deployment, an uncaught exception can terminate the worker process. If the application is not supervised, the service remains down; if it is supervised by PM2, systemd, Docker, Kubernetes, or another process manager, the service may restart, allowing repeated requests to cause crash loops and sustained denial of service. No authentication or user interaction is required if the upload endpoint is publicly reachable.
How to fix it
Upgrade Multer to version 2.0.0 or later. For source-based consumers of expressjs/multer, ensure the codebase includes the fix introduced in commit 2c8505f207d923dd8de13a9f93a4563e59933665. Because no known workaround is available, dependency upgrade is the primary remediation. After upgrading, rebuild and redeploy all applications, containers, serverless bundles, and downstream packages that vendor or bundle Multer. Where immediate upgrade is delayed, reduce exposure by restricting access to upload endpoints, enforcing request size limits at the reverse proxy or load balancer, applying rate limits, requiring authentication where appropriate, and ensuring process supervisors restart crashed workers; these measures reduce operational impact but should not be treated as a complete fix.
How to confirm the fix worked
Confirm that dependency manifests and lockfiles resolve Multer to 2.0.0 or later, or that source checkouts contain commit 2c8505f207d923dd8de13a9f93a4563e59933665. Validate with package tooling such as npm ls multer, yarn why multer, pnpm why multer, software composition analysis, and container image scans. Exercise upload endpoints with normal multipart uploads to confirm application functionality after the upgrade. If safe in a non-production environment, send malformed multipart/form-data test cases and verify the application returns a controlled 4xx error or safely closes the request without terminating the Node.js process. Also confirm runtime stability by checking that process restart counters do not increase during malformed-request testing.
Typical attack path
- Discover an application endpoint that accepts multipart/form-data requests, especially file upload or form submission routes.
- Confirm the endpoint is reachable without authentication or with low-privilege access.
- Send a malformed multipart/form-data request designed to trigger the vulnerable Multer parsing path.
- Cause an unhandled exception in the Node.js process while Multer parses the request.
- Force the application worker to terminate or restart.
- Repeat requests to create intermittent outages, crash loops, or sustained denial of service.
How to detect it
To determine whether this vulnerability was already exploited, correlate HTTP access logs with application crash and restart telemetry. Focus on upload endpoints receiving multipart/form-data requests that are malformed, unusually small, missing boundaries, using invalid boundary syntax, abruptly terminated, or producing 400/500 responses immediately before a Node.js worker exits. Review application logs for uncaught exceptions, Multer or multipart parser stack traces, and process termination messages. Review process-manager and runtime sources such as PM2 logs, systemd journal, Docker/Kubernetes container events, serverless execution logs, APM traces, and Node.js stderr for repeated crashes or restart loops. In web server, load balancer, CDN, and WAF logs, look for bursts of POST requests with Content-Type: multipart/form-data targeting upload routes, especially from the same source IP, user agent, ASN, or automation tool, followed by 502/503/504 responses. No public KEV listing, ransomware association, or named threat actor activity is currently indicated for this CVE, so detection should emphasize local crash evidence rather than known actor-specific infrastructure.
- Content-Type: multipart/form-data
- multipart/form-data; boundary=
- Error: Multipart: Boundary not found
- Unexpected end of form
- Unexpected end of multipart data
- MulterError
- uncaughtException
- Unhandled exception
- UnhandledPromiseRejectionWarning
- node:internal/process
- node:internal/streams
- at multer
- /node_modules/multer/
- npm ls multer
- pm2: App [
- exited with code
- systemd: Main process exited
- Back-off restarting failed container
- CrashLoopBackOff
- HTTP 502
- HTTP 503
- HTTP 504
What your security team should do
- Inventory all Node.js and Express applications that use Multer, including transitive, vendored, and bundled copies.
- Prioritize remediation for internet-facing applications, unauthenticated upload endpoints, and services whose outage would affect customer-facing or business-critical workflows.
- Upgrade Multer to 2.0.0 or later and redeploy affected applications; verify lockfiles and container images reflect the fixed version.
- Add or confirm reverse-proxy request controls, including upload size limits, header/body timeouts, and rate limiting for multipart/form-data endpoints.
- Ensure Node.js services are supervised by a process manager or orchestrator with restart limits and alerting for crash loops.
- Monitor application logs, process-manager logs, container events, and web access logs for malformed multipart requests followed by Node.js crashes or restarts.
- Because the vulnerability is not currently in CISA KEV and has low EPSS, treat it as a high-priority availability fix for exposed upload services rather than an emergency exploited-in-the-wild response unless local evidence indicates exploitation.
The record
Multer is a node.js middleware for handling `multipart/form-data`. A vulnerability that is present starting in version 1.4.4-lts.1 and prior to version 2.0.0 allows an attacker to trigger a Denial of Service (DoS) by sending a malformed multi-part upload request. This request causes an unhandled exception, leading to a crash of the process. Users should upgrade to version 2.0.0 to receive a patch. No known workarounds are available.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | multer | 1.4.4-lts.1 | 2.0.0 |
| Chainguard | grafana-image-renderer | 0 | 3.12.6-r0 |
| Wolfi | grafana-image-renderer | 0 | 3.12.6-r0 |
Related vulnerabilities
- GHSA-72gw-mp4g-v24j Multer vulnerable to Denial of Service via deeply nested field names Also affects multer
- GHSA-3p4h-7m6x-2hcm Multer vulnerable to Denial of Service via incomplete cleanup of aborted uploads Also affects multer
- CVE-2026-5038 Impact: multer versions 2.0.0-alpha.1 through 2.1.1 and 3.0.0-alpha.1 are vulnerable to a… Also affects multer
- CVE-2026-5079 Impact: multer versions 1.0.0 through 2.1.1 and 3.0.0-alpha.1 are vulnerable to a Denial… Also affects multer
- GHSA-5528-5vmv-3xc2 Multer Vulnerable to Denial of Service via Uncontrolled Recursion Also affects multer
- CVE-2026-3520 Multer is a node.js middleware for handling `multipart/form-data`. Also affects multer
- GHSA-xf7r-hgr6-v32p Multer vulnerable to Denial of Service via incomplete cleanup Also affects multer
- GHSA-v52c-386h-88mc Multer vulnerable to Denial of Service via resource exhaustion Also affects multer