CVE-2026-8161
High · 7.5CVSS
7.5
EPSS
0.5%
Published
May 12, 2026
CISA due date
—
Cloudanix analysis
A flaw in a common upload-handling component can let someone crash affected web services by sending a specially crafted form upload.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
CVE-2026-8161 is a remotely triggerable denial-of-service flaw in pillarjs multiparty versions 4.2.3 and earlier. When parsing multipart/form-data, multiparty stores parsed fields in a plain JavaScript object. If an attacker supplies a multipart field name that collides with an inherited Object.prototype property, such as __proto__, constructor, or toString, the parser may treat the inherited value as though it were the expected field array and call .push() on it. Because the inherited value is not an array, Node.js throws a TypeError. If the application does not catch that exception, the process can terminate, making the upload-handling service unavailable.
Why it matters to the business
Any internet-facing or internal service that accepts file uploads or multipart form submissions through vulnerable multiparty versions can be crashed by a single unauthenticated request. The main operational risk is service downtime, failed uploads or form submissions, health-check failures, container or process restart loops, and degraded availability for dependent applications. The CVSS score is high for availability impact, but EPSS is currently low and the issue is not listed in CISA KEV, so remediation should be prioritized for exposed upload endpoints and business-critical services rather than treated as evidence of active widespread exploitation.
How an attack unfolds
An attacker identifies an endpoint that accepts multipart/form-data, such as a file upload, profile form, support attachment, import feature, or API endpoint using multiparty. The attacker sends a crafted multipart request containing a field whose name matches an inherited JavaScript Object.prototype property, for example __proto__, constructor, or toString. During parsing, vulnerable multiparty versions 4.2.3 and earlier attempt to append the field value using .push() on what should be an array. Because the property resolves to an inherited prototype value rather than an initialized array, a TypeError is thrown. In typical Node.js applications where this exception is not safely handled around the parser, the uncaught exception terminates the process. An attacker can repeat the request to keep the service down or force repeated restarts under a process manager or container orchestrator.
How to fix it
Upgrade pillarjs multiparty to version 4.3.0 or later wherever it is used. There are no reliable application-level workarounds identified by the advisory, so dependency remediation is the primary fix. Rebuild and redeploy affected services after upgrading, and ensure lockfiles and container images are refreshed so the vulnerable transitive or direct dependency is removed. As defense in depth, validate and reject unexpected multipart field names at the application or edge layer, limit request size and upload rates, and ensure Node.js services are supervised so they restart cleanly; however, these controls should not be considered substitutes for upgrading.
How to confirm the fix worked
Confirm package inventory shows multiparty version 4.3.0 or later in package manifests, lockfiles, deployed artifacts, and container images. Use package-manager checks such as npm ls multiparty, npm audit, software composition analysis, or container image scanning to verify no deployed service still includes multiparty 4.2.3 or earlier. Exercise relevant upload and multipart form endpoints in a non-production environment with prototype-colliding field names such as __proto__, constructor, and toString and confirm the service returns a controlled error or handles the request without crashing. Validate process uptime, health checks, and application logs during testing to ensure no uncaught TypeError occurs.
Typical attack path
- Discover an application endpoint that accepts multipart/form-data requests.
- Confirm the endpoint is backed by a Node.js service using vulnerable multiparty parsing behavior.
- Send a multipart/form-data request containing a field name that collides with Object.prototype, such as __proto__, constructor, or toString.
- Trigger a TypeError when multiparty attempts to call .push() on the inherited prototype value.
- Cause the Node.js process to crash if the exception is uncaught.
- Repeat the request to sustain denial of service or cause restart loops.
How to detect it
To determine whether this was already exploited, review application access logs, reverse proxy logs, WAF logs, API gateway logs, Node.js application logs, process manager logs, and container/orchestrator events for the same time windows. Look for multipart/form-data POST requests to upload or form endpoints containing field names such as __proto__, constructor, or toString, especially if followed by HTTP 500 responses, connection resets, service restarts, container restarts, or health-check failures. In Node.js logs, look for uncaught exceptions with TypeError messages involving .push not being a function and stack traces referencing node_modules/multiparty. Correlate suspicious requests with process exits, PM2/systemd/Kubernetes restart events, increased restart counts, and bursts of repeated requests from the same source IP or user agent. Because this vulnerability causes denial of service rather than code execution, expected artifacts are crash logs, request traces, and availability events rather than persistence files or new processes.
- multipart/form-data
- name="__proto__"
- name="constructor"
- name="toString"
- TypeError: fields[name].push is not a function
- TypeError: .push is not a function
- Uncaught TypeError
- uncaughtException
- node_modules/multiparty
- node_modules/multiparty/index.js
- POST /upload
- POST /uploads
- POST /api/upload
- POST /files
- POST /import
- CrashLoopBackOff
- OOMKilled=false
- Error: write EPIPE
What your security team should do
- Identify all applications, APIs, and container images that include pillarjs multiparty, especially internet-facing upload or form-submission services.
- Upgrade multiparty to 4.3.0 or later and redeploy affected services; verify lockfiles and runtime images no longer contain versions 4.2.3 or earlier.
- Prioritize remediation for unauthenticated upload endpoints, high-availability services, and systems where repeated process crashes would affect customers or operations.
- Add temporary edge or application-layer filtering for multipart field names such as __proto__, constructor, and toString if immediate upgrade is not possible, understanding this is only a compensating control.
- Review Node.js process supervision, crash handling, and rate limiting to reduce the operational impact of repeated malformed upload requests.
- Search historical logs for suspicious multipart requests and Node.js crash signatures consistent with this issue.
- Monitor for repeated 5xx responses, process restarts, container restarts, or uncaught TypeError events around multipart upload endpoints.
The record
multiparty@4.2.3 and lower versions are vulnerable to denial of service via uncaught exception. By sending a multipart/form-data request with a field name that collides with an inherited Object.prototype property such as __proto__, constructor, or toString, the parser invokes .push() on the inherited prototype value rather than an array, throwing a TypeError that propagates as an uncaught exception and crashes the process. Impact: any service accepting multipart uploads via multiparty is affected. Workarounds: none. Upgrade to multiparty@4.3.0 or higher.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | multiparty | 0 | 4.3.0 |
Related vulnerabilities
- GHSA-qxch-whhj-8956 multiparty: Denial of Service via Prototype Pollution leads to Uncaught Exception Same vulnerability
- GHSA-65x3-rw7q-gx94 multiparty vulnerable to ReDoS via filename parsing Also affects multiparty
- GHSA-xh3c-6gcq-g4rv multiparty vulnerable to Denial of Service via Uncaught Exception in filename* parameter… Also affects multiparty
- CVE-2026-8162 multiparty@4.2.3 and lower versions are vulnerable to denial of service via uncaught… Also affects multiparty
- CVE-2026-8159 multiparty@4.2.3 and lower versions are vulnerable to denial of service via regular… Also affects multiparty
- CVE-2026-100347 kin-openapi is a Go project for handling OpenAPI files. CWE-248
- CVE-2026-102599 Socket.IO enables bidirectional and low-latency communication for every platform. CWE-248
- CVE-2026-107382 MariaDB Connector/Node.js is used to connect applications developed on Node.js to MariaDB… CWE-248