Impact
The vulnerability arises when Plug.Cowboy.Conn.conn/1 converts the :scheme pseudo‑header from an HTTP/2 request into an Erlang atom without validation. Atoms are permanent and the BEAM atom table has a fixed size of 1,048,576 entries. An unauthenticated attacker can provide many distinct :scheme values, causing the table to grow until the VM aborts with a system_limit exception. The effect is a service crash that takes down the entire Erlang node. This weakness falls under CWE‑770 (Allocation of Resources Without Limits or Throttling).
Affected Systems
The issue affects the elixir‑plug plug_cowboy library versions 2.0.0 through 2.8.0. It is present in setups that enable HTTP/2 on Plug.Cowboy listeners; HTTP/1.1 listeners are not vulnerable because the scheme is derived from the listener type instead of a client‑supplied header.
Risk and Exploitability
The CVSS score of 8.7 indicates a high severity. EPSS data is currently not available, and the vulnerability is not listed in the CISA KEV catalog. The attack vector is inferred to be network‑based, using unauthenticated HTTP/2 traffic. An attacker needs only to send HTTP/2 requests with unique :scheme headers; no authentication or privileged access is required. Because the atom table is not naturally throttled, exploitation likelihood remains high with no countermeasures in place.
OpenCVE Enrichment
Github GHSA