CVE-2026-65624
Cowboy HTTP/1.1 max_headers Bypass via Duplicate Header Names Enables Memory Exhaustion
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- Low
Exploit likelihood
What each source reports
CVE List Score used
6.9
Cowboy HTTP/1.1 max_headers Bypass via Duplicate Header Names Enables Memory Exhaustion
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-770
- Updated
- 2026-11-02
EUVDEUVD-2026-49740
6.9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
EUVD-2026-49740- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-v9x8-262p-f2g5
6.9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an...
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
GHSA-v9x8-262p-f2g5- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-770
- Updated
- 2026-11-02
NVD
6.9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-770
- Updated
- 2026-11-02
OSV
6.9
Cowboy HTTP/1.1 max_headers Bypass via Duplicate Header Names Enables Memory Exhaustion
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-65624
6.9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1. The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window. The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions. This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
DEBIAN-CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Updated
- 2026-11-02
Show 6 moreShow less
OSVEEF-CVE-2026-65624
6.9
Cowboy HTTP/1.1 max_headers Bypass via Duplicate Header Names Enables Memory Exhaustion
Summary
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
EEF-CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVRHSA-2026:47231
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:47231- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:47236
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:47236- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:57882
7.5
Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update
- Record
RHSA-2026:57882- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-65624
6.9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1. The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window. The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions. This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
UBUNTU-CVE-2026-65624- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Updated
- 2026-11-02
OSVAZL-94308 No score
CVE-2026-65624 affecting package rabbitmq-server for versions less than 3.13.7-9
Allocation of Resources Without Limits or Throttling vulnerability in ninenines cowboy allows an unauthenticated remote attacker to exhaust connection process memory over HTTP/1.1.
The HTTP/1.1 handler in cowboy_http enforces the max_headers limit by counting the number of distinct header names in a map (maps:size(Headers)). When a request contains multiple header lines with the same name, the values are concatenated into a single ever-growing binary stored under that one map key (", " for regular headers, "; " for cookies), so the map size stays at one and the max_headers cap (default 100) is never reached. Because no accumulator bounds the total number of header lines or the total byte size of the header block (only per-line max_header_name_length and max_header_value_length apply), an unauthenticated client can send an arbitrary number of header lines with the same name and grow the connection process's binary memory to arbitrary size within the request window.
The impact per connection is bounded by request_timeout (default 5 seconds, not reset by header data), and by max_heap_size when set (the offending connection process is killed once its heap grows past the limit). When max_heap_size is left at the default (unset), sustained abuse can drive the Erlang VM into out-of-memory conditions.
This issue affects cowboy from 2.0.0-pre.4 before 2.18.0.
- Record
AZL-94308- Updated
- 2026-11-05
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
rabbitmq-serverAzure Linux:3 |
before 3.13.7-9 | 3.13.7-9 |
erlang-cowboyDebian:14 |
before 2.18.0+dfsg-1, plus listed versions 0.10.0+dfsg1-10.6.1-10.6.1-20.6.1-30.6.1-4 Show 10 moreShow less0.8.6+dfsg-10.8.6+dfsg1-11.0.0+dfsg1-12.0.0~pre.1+dfsg1-12.0.0~pre.1+dfsg1-22.0.0~pre.1+dfsg1-32.0.0~pre.1+dfsg1-42.16.1+dfsg-12.16.1+dfsg-22.17.0+dfsg-1 |
2.18.0+dfsg-1 |
cowboyHex |
2.0.0-pre.4 up to 2.18.0, plus listed versions 2.0.02.1.02.10.02.11.02.12.0 Show 21 moreShow less2.13.02.14.02.14.12.14.22.15.02.16.02.16.12.17.02.2.02.2.12.2.22.3.02.4.02.5.02.6.02.6.12.6.22.6.32.7.02.8.02.9.0 |
2.18.0 |
rabbitmq-server4.3Red Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:4.3.4-0.2.hum1 | 0:4.3.4-0.2.hum1 |
rabbitmq-server4.2Red Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:4.2.9-0.2.hum1 | 0:4.2.9-0.2.hum1 |
rabbitmq-server4.3Red Hat:hummingbird:1 From an advisory covering 2 CVEs |
before 0:4.3.5-0.1.hum1 | 0:4.3.5-0.1.hum1 |
rabbitmq-serverUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 3.5.4-13.5.4-33.5.4-3.13.5.7-13.5.7-1ubuntu0.16.04.1 Show 5 moreShow less3.5.7-1ubuntu0.16.04.23.5.7-1ubuntu0.16.04.43.5.7-1ubuntu0.16.04.4+esm13.5.7-1ubuntu0.16.04.4+esm23.5.7-1ubuntu0.16.04.4+esm3 |
None known |
erlang-cowboyUbuntu:16.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-1 |
None known |
rabbitmq-serverUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 3.6.10-13.6.10-1ubuntu0.13.6.10-1ubuntu0.33.6.10-1ubuntu0.43.6.10-1ubuntu0.53.6.10-1ubuntu0.5+esm1 |
None known |
erlang-cowboyUbuntu:18.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-2 |
None known |
Show 10 moreShow less
| Package | Affected | Fixed |
|---|---|---|
rabbitmq-serverUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 3.7.8-4ubuntu23.7.18-13.8.2-0ubuntu13.8.2-0ubuntu1.13.8.2-0ubuntu1.2 Show 8 moreShow less3.8.2-0ubuntu1.33.8.2-0ubuntu1.43.8.2-0ubuntu1.53.8.3-0ubuntu0.13.8.3-0ubuntu0.23.8.3-0ubuntu0.33.8.3-0ubuntu0.3+esm13.8.3-0ubuntu0.3+esm2 |
None known |
erlang-cowboyUbuntu:20.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-4 |
None known |
erlang-cowboyUbuntu:22.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-4 |
None known |
rabbitmq-serverUbuntu:22.04:LTS |
All versions, plus listed versions 3.8.9-3ubuntu13.9.8-13.9.8-23.9.8-33.9.8-5 Show 8 moreShow less3.9.8-63.9.13-13.9.13-1ubuntu0.22.04.13.9.13-1ubuntu0.22.04.23.9.27-0ubuntu0.13.9.27-0ubuntu0.23.9.27-0ubuntu0.53.9.27-0ubuntu0.6 |
None known |
erlang-cowboyUbuntu:24.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-4 |
None known |
rabbitmq-serverUbuntu:24.04:LTS |
All versions, plus listed versions 3.12.1-13.12.1-1ubuntu13.12.1-1ubuntu1.23.12.1-1ubuntu1.43.12.1-1ubuntu1.63.12.1-1ubuntu1.7 |
None known |
erlang-cowboyUbuntu:26.10 |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-4build12.18.0+dfsg-1 |
None known |
rabbitmq-serverUbuntu:26.10 |
All versions, plus listed versions 4.0.5-10ubuntu54.3.2-4ubuntu24.3.2-4ubuntu3 |
None known |
erlang-cowboyUbuntu:26.04:LTS |
All versions, plus listed versions 2.0.0~pre.1+dfsg1-42.0.0~pre.1+dfsg1-4build1 |
None known |
rabbitmq-serverUbuntu:26.04:LTS |
All versions, plus listed versions 4.0.5-8ubuntu24.0.5-10ubuntu14.0.5-10ubuntu24.0.5-10ubuntu34.0.5-10ubuntu44.0.5-10ubuntu54.0.5-10ubuntu5.14.0.5-10ubuntu5.2 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| aliases, published | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-65624 is a medium vulnerability (CVSS 6.9) in Ninenines Cowboy, published July 28, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.38%, the 32nd percentile. Fixed in rabbitmq-server 3.13.7-9.
References
cna.erlef.org/cves/CVE-2026-65624.html
osv.dev/vulnerability/EEF-CVE-2026-65624
github.com/ninenines/cowboy/commit/3a34d8c1cfd94326466aa16a9017236691dc9c55
nvd.nist.gov/vuln/detail/CVE-2026-65624
github.com/advisories/GHSA-v9x8-262p-f2g5
github.com
Show 24 moreShow less
repo.hex.pm
github.com/CVEProject/cvelistV5/tree/main/cves/2026/65xxx/CVE-2026-65624.json
github.com/ninenines/cowboy
security-tracker.debian.org/tracker/CVE-2026-65624
hex.pm/packages/cowboy
access.redhat.com/errata/RHSA-2026:47231
access.redhat.com/security/cve/CVE-2026-59248
access.redhat.com/security/cve/CVE-2026-65624
access.redhat.com/security/updates/classification
images.redhat.com
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_47231.json
bugzilla.redhat.com/show_bug.cgi?id=2507959
cve.org/CVERecord?id=CVE-2026-59248
nvd.nist.gov/vuln/detail/CVE-2026-59248
cna.erlef.org/cves/CVE-2026-59248.html
github.com/ninenines/cowlib/commit/f582430498072a0c65ad338030321576dc13a343
osv.dev/vulnerability/EEF-CVE-2026-59248
bugzilla.redhat.com/show_bug.cgi?id=2507960
cve.org/CVERecord?id=CVE-2026-65624
access.redhat.com/errata/RHSA-2026:47236
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_47236.json
access.redhat.com/errata/RHSA-2026:57882
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_57882.json
ubuntu.com/security/CVE-2026-65624