CVE-2026-56814: CWE-770 Allocation of Resources Without Limits or Throttling in elixir-plug plug
Plug.Parsers.MULTIPART, the multipart request-body parser used to handle file uploads and multipart forms, does not enforce its :length budget against all consumed resources, allowing an unauthenticated remote attacker to cause denial of service. The parser charges the :length limit only for part body bytes; part header bytes are never counted, and a part with an empty body costs zero. Because every part whose Content-Disposition carries a non-empty filename creates a fresh temporary file (via Plug.Upload) and retains a Plug.Upload struct for the duration of the request, an attacker can send a single request composed of many empty-body file parts. Such a request stays well under the configured :length limit (8,000,000 bytes by default) while creating one temporary file per part, leading to inode and disk exhaustion and unbounded memory growth. Any application using Plug.Parsers with the :multipart parser is affected, and no authentication is required, only reachability of a multipart endpoint over HTTP. This vulnerability is associated with program files lib/plug/parsers/multipart.ex and program routines Plug.Parsers.MULTIPART.parse_multipart/2, Plug.Parsers.MULTIPART.parse_multipart_headers/5, Plug.Parsers.MULTIPART.parse_multipart_body/4, and Plug.Parsers.MULTIPART.parse_multipart_file/4. This issue affects plug: from 1.4.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.0 before 1.19.5, and from 1.20.0 before 1.20.3.
AI Analysis
Technical Summary
The multipart parser Plug.Parsers.MULTIPART in elixir-plug fails to count part header bytes and parts with empty bodies against the configured :length limit, which is only charged for part body bytes. An attacker can exploit this by sending a single multipart request containing many file parts with empty bodies but non-empty filenames, causing the parser to create a temporary file for each part and retain Plug.Upload structs. This leads to resource exhaustion (disk inodes and memory) and denial of service without requiring authentication. The issue affects plug versions from 1.4.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.0 before 1.19.5, and from 1.20.0 before 1.20.3.
Potential Impact
An unauthenticated remote attacker can cause denial of service by exhausting disk inodes and memory resources on servers running vulnerable versions of plug that use the multipart parser. This can disrupt availability of applications handling multipart HTTP requests, such as file uploads, without requiring any authentication or special privileges.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider limiting the number of multipart parts accepted per request or implementing external resource usage controls to mitigate potential denial of service. Monitor for vendor updates and apply official patches once released.
CVE-2026-56814: CWE-770 Allocation of Resources Without Limits or Throttling in elixir-plug plug
Description
Plug.Parsers.MULTIPART, the multipart request-body parser used to handle file uploads and multipart forms, does not enforce its :length budget against all consumed resources, allowing an unauthenticated remote attacker to cause denial of service. The parser charges the :length limit only for part body bytes; part header bytes are never counted, and a part with an empty body costs zero. Because every part whose Content-Disposition carries a non-empty filename creates a fresh temporary file (via Plug.Upload) and retains a Plug.Upload struct for the duration of the request, an attacker can send a single request composed of many empty-body file parts. Such a request stays well under the configured :length limit (8,000,000 bytes by default) while creating one temporary file per part, leading to inode and disk exhaustion and unbounded memory growth. Any application using Plug.Parsers with the :multipart parser is affected, and no authentication is required, only reachability of a multipart endpoint over HTTP. This vulnerability is associated with program files lib/plug/parsers/multipart.ex and program routines Plug.Parsers.MULTIPART.parse_multipart/2, Plug.Parsers.MULTIPART.parse_multipart_headers/5, Plug.Parsers.MULTIPART.parse_multipart_body/4, and Plug.Parsers.MULTIPART.parse_multipart_file/4. This issue affects plug: from 1.4.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.0 before 1.19.5, and from 1.20.0 before 1.20.3.
CVSS v4.0
Score 6.9medium
Affected software
pkg:hex/plugcpe:2.3:a:elixir-plug:plug:*:*:*:*:*:*:*:*Run on your own infrastructure? Check whether these packages are installed with threat-finder — our free open-source scanner.
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The multipart parser Plug.Parsers.MULTIPART in elixir-plug fails to count part header bytes and parts with empty bodies against the configured :length limit, which is only charged for part body bytes. An attacker can exploit this by sending a single multipart request containing many file parts with empty bodies but non-empty filenames, causing the parser to create a temporary file for each part and retain Plug.Upload structs. This leads to resource exhaustion (disk inodes and memory) and denial of service without requiring authentication. The issue affects plug versions from 1.4.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.0 before 1.19.5, and from 1.20.0 before 1.20.3.
Potential Impact
An unauthenticated remote attacker can cause denial of service by exhausting disk inodes and memory resources on servers running vulnerable versions of plug that use the multipart parser. This can disrupt availability of applications handling multipart HTTP requests, such as file uploads, without requiring any authentication or special privileges.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider limiting the number of multipart parts accepted per request or implementing external resource usage controls to mitigate potential denial of service. Monitor for vendor updates and apply official patches once released.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- EEF
- Date Reserved
- 2026-06-23T12:29:02.507Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 6a50e30a68715ace4389e0ee
Added to database: 07/10/2026, 12:18:18 UTC
Last enriched: 07/10/2026, 12:32:47 UTC
Last updated: 08/24/2026, 10:52:10 UTC
Views: 91
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.