CVE-2026-32688: CWE-770 Allocation of Resources Without Limits or Throttling in elixir-plug plug_cowboy
Allocation of Resources Without Limits or Throttling vulnerability in elixir-plug plug_cowboy allows unauthenticated remote denial of service via atom table exhaustion. Plug.Cowboy.Conn.conn/1 in lib/plug/cowboy/conn.ex calls String.to_atom/1 on the value returned by :cowboy_req.scheme/1. For HTTP/2 connections, cowlib passes the client-supplied :scheme pseudo-header value through verbatim without validation. Each unique value permanently allocates a new entry in the BEAM atom table. Since atoms are never garbage-collected and the atom table has a fixed limit (default 1,048,576), an unauthenticated attacker can exhaust the table by sending HTTP/2 requests with unique :scheme values, causing the Erlang VM to abort with system_limit and taking down the entire node. This vulnerability does not affect HTTP/1.1, where cowboy derives the scheme from the listener type rather than from a client-supplied header. This issue affects plug_cowboy: from 2.0.0 before 2.8.1.
AI Analysis
Technical Summary
The vulnerability in plug_cowboy occurs in the Plug.Cowboy.Conn.conn/1 function, which calls String.to_atom/1 on the :scheme value returned by :cowboy_req.scheme/1. For HTTP/2, the :scheme pseudo-header is client-controlled and passed verbatim without validation, allowing attackers to send many unique values. Each unique atom consumes a permanent slot in the BEAM atom table, which is not garbage collected and has a fixed maximum size (default 1,048,576). Exhausting this table causes the Erlang VM to abort with a system_limit error, resulting in a denial of service by crashing the entire node. HTTP/1.1 is unaffected because the scheme is derived from the listener type rather than client input. The vulnerability affects plug_cowboy versions from 2.0.0 up to but not including 2.8.1.
Potential Impact
An unauthenticated remote attacker can cause a denial of service by exhausting the Erlang VM atom table through sending HTTP/2 requests with unique :scheme pseudo-header values. This leads to the Erlang VM aborting and the entire node crashing, resulting in service disruption. The vulnerability does not allow code execution or data disclosure but impacts availability severely.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider mitigating by disabling or restricting HTTP/2 support in plug_cowboy if feasible, or applying network-level controls to limit or validate incoming HTTP/2 :scheme headers. Avoid relying on HTTP/2 connections from untrusted sources. Monitor vendor channels for updates and apply official patches once released.
CVE-2026-32688: CWE-770 Allocation of Resources Without Limits or Throttling in elixir-plug plug_cowboy
Description
Allocation of Resources Without Limits or Throttling vulnerability in elixir-plug plug_cowboy allows unauthenticated remote denial of service via atom table exhaustion. Plug.Cowboy.Conn.conn/1 in lib/plug/cowboy/conn.ex calls String.to_atom/1 on the value returned by :cowboy_req.scheme/1. For HTTP/2 connections, cowlib passes the client-supplied :scheme pseudo-header value through verbatim without validation. Each unique value permanently allocates a new entry in the BEAM atom table. Since atoms are never garbage-collected and the atom table has a fixed limit (default 1,048,576), an unauthenticated attacker can exhaust the table by sending HTTP/2 requests with unique :scheme values, causing the Erlang VM to abort with system_limit and taking down the entire node. This vulnerability does not affect HTTP/1.1, where cowboy derives the scheme from the listener type rather than from a client-supplied header. This issue affects plug_cowboy: from 2.0.0 before 2.8.1.
CVSS v4.0
Score 8.7high
Affected software
Weaknesses
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability in plug_cowboy occurs in the Plug.Cowboy.Conn.conn/1 function, which calls String.to_atom/1 on the :scheme value returned by :cowboy_req.scheme/1. For HTTP/2, the :scheme pseudo-header is client-controlled and passed verbatim without validation, allowing attackers to send many unique values. Each unique atom consumes a permanent slot in the BEAM atom table, which is not garbage collected and has a fixed maximum size (default 1,048,576). Exhausting this table causes the Erlang VM to abort with a system_limit error, resulting in a denial of service by crashing the entire node. HTTP/1.1 is unaffected because the scheme is derived from the listener type rather than client input. The vulnerability affects plug_cowboy versions from 2.0.0 up to but not including 2.8.1.
Potential Impact
An unauthenticated remote attacker can cause a denial of service by exhausting the Erlang VM atom table through sending HTTP/2 requests with unique :scheme pseudo-header values. This leads to the Erlang VM aborting and the entire node crashing, resulting in service disruption. The vulnerability does not allow code execution or data disclosure but impacts availability severely.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider mitigating by disabling or restricting HTTP/2 support in plug_cowboy if feasible, or applying network-level controls to limit or validate incoming HTTP/2 :scheme headers. Avoid relying on HTTP/2 connections from untrusted sources. Monitor vendor channels for updates and apply official patches once released.
Technical Details
- Data Version
- 5.2
- Assigner Short Name
- EEF
- Date Reserved
- 2026-03-13T09:12:14.475Z
- Cvss Version
- 4.0
- State
- PUBLISHED
- Remediation Level
- null
Threat ID: 69ef6f96ba26a39fba2ff971
Added to database: 4/27/2026, 2:15:50 PM
Last enriched: 5/5/2026, 2:22:05 AM
Last updated: 6/11/2026, 5:01:28 PM
Views: 70
Community Reviews
0 reviewsCrowdsource mitigation strategies, share intel context, and vote on the most helpful responses. Sign in to add your voice and help keep defenders ahead.
Want to contribute mitigation steps or threat intel context? Sign in or create an account to join the community discussion.
Actions
Updates to AI analysis require Pro Console access. Upgrade inside Console → Billing.
Need more coverage?
Upgrade to Pro Console for AI refresh and higher limits.
For incident response and remediation, OffSeq services can help resolve threats faster.
Latest Threats
Check if your credentials are on the dark web
Instant breach scanning across billions of leaked records. Free tier available.