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 CVE-2026-32688 in elixir-plug's plug_cowboy occurs because the function Plug.Cowboy.Conn.conn/1 converts the client-supplied HTTP/2 :scheme pseudo-header to an atom using String.to_atom/1 without validation. Each unique :scheme value creates a new atom in the Erlang VM's atom table, which has a fixed size and does not support garbage collection. An attacker can exploit this by sending numerous HTTP/2 requests with unique :scheme values, exhausting the atom table and causing the Erlang VM to abort with a system_limit error, resulting in a denial of service. This vulnerability affects plug_cowboy versions from 2.0.0 before 2.8.1 and does not impact HTTP/1.1 where the scheme is derived differently. There is no vendor advisory or patch information currently available.
Potential Impact
An unauthenticated remote attacker can cause a denial of service by exhausting the Erlang VM atom table through crafted HTTP/2 requests with unique :scheme pseudo-header values. This leads to the Erlang VM aborting with a system_limit error and the entire node crashing, resulting in service disruption. The vulnerability does not affect HTTP/1.1 connections. No known exploits in the wild have been reported.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider mitigating exposure by restricting or filtering HTTP/2 traffic from untrusted sources or disabling HTTP/2 support if feasible. Avoid relying on HTTP/2 connections from untrusted clients to prevent exploitation. Monitor vendor channels for updates and patches addressing this issue.
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.
AI-Powered Analysis
Machine-generated threat intelligence
Technical Analysis
The vulnerability CVE-2026-32688 in elixir-plug's plug_cowboy occurs because the function Plug.Cowboy.Conn.conn/1 converts the client-supplied HTTP/2 :scheme pseudo-header to an atom using String.to_atom/1 without validation. Each unique :scheme value creates a new atom in the Erlang VM's atom table, which has a fixed size and does not support garbage collection. An attacker can exploit this by sending numerous HTTP/2 requests with unique :scheme values, exhausting the atom table and causing the Erlang VM to abort with a system_limit error, resulting in a denial of service. This vulnerability affects plug_cowboy versions from 2.0.0 before 2.8.1 and does not impact HTTP/1.1 where the scheme is derived differently. There is no vendor advisory or patch information currently available.
Potential Impact
An unauthenticated remote attacker can cause a denial of service by exhausting the Erlang VM atom table through crafted HTTP/2 requests with unique :scheme pseudo-header values. This leads to the Erlang VM aborting with a system_limit error and the entire node crashing, resulting in service disruption. The vulnerability does not affect HTTP/1.1 connections. No known exploits in the wild have been reported.
Mitigation Recommendations
Patch status is not yet confirmed — check the vendor advisory for current remediation guidance. Until an official fix is available, consider mitigating exposure by restricting or filtering HTTP/2 traffic from untrusted sources or disabling HTTP/2 support if feasible. Avoid relying on HTTP/2 connections from untrusted clients to prevent exploitation. Monitor vendor channels for updates and patches addressing this issue.
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: 4/27/2026, 2:30:06 PM
Last updated: 4/27/2026, 4:24:34 PM
Views: 6
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.