PT-2026-35422 · Unknown · Plug Cowboy
Peter Ullrich
+1
·
Published
2026-04-27
·
Updated
2026-05-22
·
CVE-2026-32688
CVSS v4.0
8.7
High
| Vector | AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
Name of the Vulnerable Software and Affected Versions
plug cowboy versions 2.0.0 through 2.8.0
Description
An unauthenticated remote attacker can cause a denial of service via atom table exhaustion. In HTTP/2 connections, the
Plug.Cowboy.Conn.conn/1 function in lib/plug/cowboy/conn.ex calls String.to atom/1 on the value returned by :cowboy req.scheme/1. Because cowlib passes the client-supplied :scheme pseudo-header value without validation, each unique value creates a permanent entry in the BEAM atom table. Since atoms are not garbage-collected and the table has a fixed limit, sending requests with unique :scheme values can exhaust the table, causing the Erlang VM to abort with a system limit and crashing the node. This issue does not affect HTTP/1.1.Recommendations
Update to version 2.8.1.
As a temporary workaround, disable HTTP/2 on the Plug.Cowboy.https/3 listener by passing
protocol options: %{protocols: [:http]} in the cowboy options to restrict the listener to HTTP/1.1.Fix
DoS
Allocation of Resources Without Limits
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Plug Cowboy