CVE-2026-56814 json
Plug: multipart :length limit is not charged for part headers, enabling unbounded temp-file creation (denial of service)
published 2026-07-10 4 mo ago modified 2026-10-24 15 d ago also EEF-CVE-2026-56814 , EUVD-2026-42873 , GHSA-95qv-c9g9-rm63
- cvss
- 6.9
- version 4.0, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 1.1%
- EPSS 1.1% chance of exploitation in 30 days, percentile 65%
- public exploits
- 0
- none known
Summary
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-rc.0 before 1.16.6, from 1.17.0 before 1.17.4, from 1.18.0 before 1.18.5, from 1.19.1 before 1.19.5, and from 1.20.0 before 1.20.3.
Patch / fix
- hex plug 1.16.6, 1.17.4, 1.18.5, 1.19.5, 1.20.3
- elixir-plug plug 1.16.6, 1.17.4, 1.18.5, 1.19.5, 1.20.3
- github.com/elixir-plug/plug@c52b2f3 commit
- github.com/elixir-plug/plug@981597d commit
- github.com/elixir-plug/plug@56edca2 commit
- github.com/elixir-plug/plug@0ee8afc commit
- github.com/elixir-plug/plug@cae3605 commit
- github.com/elixir-plug/plug@f7effae commit
- github.com/elixir-plug/plug@df97d3f commit
CISA SSVC
- Exploitation
- none
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 4 mo ago
Exploit prediction
1.08% chance of exploitation in the next 30 days, higher than 65% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 4.0 | 6.9 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N |
| CNA | 4.0 | 6.9 | CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| hex | plug | >=1.4.0-rc.0, <1.16.6 >=1.17.0, <1.17.4 >=1.18.0, <1.18.5 >=1.19.1, <1.19.5 >=1.20.0, <1.20.3 |
1.16.6 1.17.4 1.18.5 1.19.5 1.20.3 |
Affected products
- elixir-plug plug
Classification
- Weakness
-
- CWE-770 Allocation of Resources Without Limits or Throttling
References
-
github.com
/elixir-plug/plug/commit/c52b2f32c90bccd718202bafccb5f95594e30183
related, web
-
github.com
/elixir-plug/plug/commit/981597d3a4271ede64373c7a731702a42c500dd6
patch
-
github.com
/elixir-plug/plug/commit/56edca2ce35fe5589cd581644d8a4493fa5f484e
patch
-
github.com
/elixir-plug/plug/commit/0ee8afcc61466dc5f7a8f048d0632c899165b81f
patch
-
github.com
/elixir-plug/plug/commit/cae36053350e5215a4e0ca33cd130af9c5fc6364
patch
-
github.com
/elixir-plug/plug/commit/f7effaed811c00b5f5bf817936bfd9c5df27b7dc
patch
-
github.com
/elixir-plug/plug/commit/df97d3f17f808a9916a7700a701fb85314559d56
patch
-
github.com
/elixir-plug/plug/security/advisories/GHSA-95qv-c9g9-rm63
vendor-advisory, related, advisory
-
cna.erlef.org
/cves/CVE-2026-56814.html
related, web
-
osv.dev
/vulnerability/EEF-CVE-2026-56814
related
-
hex.pm
/packages/plug
package
Sources
- CVE List CVE-2026-56814
- NVD CVE-2026-56814
- OSV EEF-CVE-2026-56814
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.
CPEs and fixed versions use Anchore's correction of NVD's data: Added CPE configurations because not yet analyzed by NVD.