elixir-plug/plug · Security

Plug: Unbounded buffer accumulation in multipart header parsing causes denial of service

GHSA ID
GHSA-468c-vq7p-gh64
CVE ID
CVE-2026-8468
Severity
high
Published
Updated
CVSS v4
8.2 · CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Description

Summary

An Allocation of Resources Without Limits or Throttling vulnerability in Plug.Conn.read_part_headers/2 allows an unauthenticated attacker to exhaust server memory by sending a crafted multipart/form-data request, causing a denial of service.

Details

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.

Impact

This is a denial-of-service vulnerability. Any application using Plug.Parsers with the :multipart parser, or calling Plug.Conn.read_part_headers/2 directly, is affected. An unauthenticated remote attacker can trigger the issue by sending crafted HTTP requests with no special privileges.

References

CWEs

References