Plug: Unbounded buffer accumulation in multipart header parsing causes denial of service
Package
Affected versions
>= 1.4.0, < 1.15.4
>= 1.16.0, < 1.16.3
>= 1.17.0, < 1.17.1
>= 1.18.0, < 1.18.2
>= 1.19.0, < 1.19.2
Patched versions
1.15.4
1.16.3
1.17.1
1.18.2
1.19.2
Description
Published by the National Vulnerability Database
May 14, 2026
Published to the GitHub Advisory Database
May 20, 2026
Reviewed
May 20, 2026
Last updated
May 20, 2026
Summary
An Allocation of Resources Without Limits or Throttling vulnerability in
Plug.Conn.read_part_headers/2allows an unauthenticated attacker to exhaust server memory by sending a craftedmultipart/form-datarequest, causing a denial of service.Details
Plug.Conn.read_part_headers/2inlib/plug/conn.exdoes not obey its:lengthparameter. There is no upper bound on the size of the accumulated buffer. By contrast, the sibling functionread_part_bodyhas an explicitbyte_size(acc) > lengthguard that stops accumulation once a limit is reached. No such guard exists inread_part_headers.Impact
This is a denial-of-service vulnerability. Any application using
Plug.Parserswith the:multipartparser, or callingPlug.Conn.read_part_headers/2directly, is affected. An unauthenticated remote attacker can trigger the issue by sending crafted HTTP requests with no special privileges.References
References