High severity · published Sep 15, 2026
CVE-2026-69203
Http4s Ember HTTP/2: does not enforce SETTINGS_MAX_CONCURRENT_STREAMS
7.5
CVSS
0.6%
EPSS
No
On KEV
Description
Http4s is a Scala interface for HTTP services. Prior to 0.23.35 and 1.0.0-M47, An Ember server with HTTP/2 enabled through withHttp2 does not enforce SETTINGS_MAX_CONCURRENT_STREAMS for peer-created streams. One unauthenticated connection can open an unbounded number of streams, each retaining per-stream state until heap exhaustion. The same unchecked allocation is reachable in an ember-client through server-initiated PUSH_PROMISE frames because enablePush is not enforced. This issue is fixed in versions 0.23.35 and 1.0.0-M47.
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Attack vector
Network
Complexity
Low
Privileges
None
User interaction
None
Confidentiality
None
Integrity
None
Availability
High
Scope
Unchanged
Exploitation
Is it being used?
Exploit prediction (EPSS)0.6% · higher than 50% of CVEs
Exploited in the wildNo evidence yet
CISA KEVNot listed
Ransomware campaign useNot known
Affected products
Which versions
HT
http4s · http4s
< 0.23.35; >= 1.0.0-M1, < 1.0.0-M47 · source: vendor
References
NVD
https://nvd.nist.gov/vuln/detail/CVE-2026-69203
CVE.org
https://www.cve.org/CVERecord?id=CVE-2026-69203
github.com
https://github.com/http4s/http4s/commit/4983de1f93f2caaa3b9de310cf6a9db32c50d66e
github.com
https://github.com/http4s/http4s/releases/tag/v0.23.35
github.com
https://github.com/http4s/http4s/releases/tag/v1.0.0-M47
github.com
https://github.com/http4s/http4s/security/advisories/GHSA-9vwc-pc8p-253q
More from http4s
9.2
CVE-2026-69204
Http4s: Ember accepts Transfer-Encoding combined with Content-Length (CL.TE request smuggling)
8.7
CVE-2026-69217
Http4s: Ember Server accepts duplicate Content-Length headers
8.7
CVE-2026-69205
Http4s: Ember Transfer-Encoding value parsing (TE.CL / TE.0 request smuggling)
8.2
CVE-2026-54556
Http4s: HTTP/2 Denial of Service with Ember Backend
7.5
CVE-2026-88975
Http4s: Ember HTTP/2 buffers a frame's declared payload before checking SETTINGS_MAX_FRAME_SIZE
