CVE-2026-8468
Unbounded buffer accumulation in multipart header parsing causes denial of service in plug
Vulnerability description
Allocation of Resources Without Limits or Throttling vulnerability in plug_project plug allows denial of service via unbounded buffer accumulation in multipart header parsing.
'Elixir.Plug.Conn':read_part_headers/2 in lib/plug/conn.ex does not obey its :length parameter. There is no upper bound on the size of the accumulated buffer. By contrast, the sibling function read_part_body has an explicit byte_size(acc) > length guard that stops accumulation once a limit is reached. No such guard exists in read_part_headers. An unauthenticated remote attacker can exhaust server memory by sending a crafted multipart/form-data request, causing a denial of service.
This issue affects plug from 1.4.0 before 1.15.4, 1.16.3, 1.17.1, 1.18.2, and 1.19.2.
Affected
pkg:hex/plug
| Module | Source File | Routine |
|---|---|---|
Elixir.Plug.Conn
|
lib/plug/conn.ex
|
Plug.Conn.read_part_headers/2
|
| Status | Type | Version | Changes / Fixed in |
|---|---|---|---|
| affected | semver ⓘ | 1.4.0
|
< 1.15.4
|
| affected | semver ⓘ | 1.16.0
|
< 1.16.3
|
| affected | semver ⓘ | 1.17.0
|
< 1.17.1
|
| affected | semver ⓘ | 1.18.0
|
< 1.18.2
|
| affected | semver ⓘ | 1.19.0
|
< 1.19.2
|
pkg:github/elixir-plug/plug
| Module | Source File | Routine |
|---|---|---|
Elixir.Plug.Conn
|
lib/plug/conn.ex
|
Plug.Conn.read_part_headers/2
|
| Status | Type | Version | Changes / Fixed in |
|---|---|---|---|
| affected | git ⓘ | c52b2f32c9
|
|
Configurations
The application must use Plug.Parsers with the :multipart parser, or otherwise call Plug.Conn.read_part_headers/2 to process multipart/form-data request bodies. Deployments that do not handle multipart uploads are not affected.
References
- https://github.com/elixir-plug/plug/security/advisories/GHSA-468c-vq7p-gh64 vendor-advisory related
- https://osv.dev/vulnerability/EEF-CVE-2026-8468 related
- https://cna.erlef.org/cves/CVE-2026-8466.html related
- https://github.com/elixir-plug/plug/commit/2cb7958d33030aa826b0c7404375844d4593d43a patch
- https://github.com/elixir-plug/plug/commit/aa69c5ece99c40ded88b8c6581ecc86664b0b734 patch
- https://github.com/elixir-plug/plug/commit/d5dfffe25e975585227b1b85d247b0d14164bc45 patch
- https://github.com/elixir-plug/plug/commit/df812a1527bae9e941965e897308a2b8bbf83a94 patch
- https://github.com/elixir-plug/plug/commit/33858427c7f2737d560a2e40a0c9a9270d77d1d7 patch
Credits
- Finder: José Valim
- Remediation developer: José Valim
- Analyst: Jonatan Männchen / EEF
CVE record as JSON:
GET /cves/CVE-2026-8468.json
OSV record as JSON:
GET /osv/EEF-CVE-2026-8468.json