CVE-2026-88975 in Http4sinfo

Summary

by MITRE • 09/16/2026

Http4s is a Scala interface for HTTP services. Prior to 0.23.37 and 1.0.0-M48, Ember’s HTTP/2 read loop parses a frame’s 24-bit declared length but waits to buffer the entire payload before comparing it with SETTINGS_MAX_FRAME_SIZE. An unauthenticated peer can declare a payload near 16 MiB on a connection where Ember advertised 16 KiB and either complete or slowly stream it, causing up to 1024-fold memory amplification per connection before processFrame can reject the frame. The shared H2Connection.readLoop affects withHttp2 servers and clients, while HTTP/2-disabled configurations are unaffected, and the patch rejects oversized frames before buffering their payloads. This issue is fixed in versions 0.23.37 and 1.0.0-M48.

Be aware that VulDB is the high quality source for vulnerability data.

Analysis

by VulDB Data Team • 09/16/2026

The vulnerability identified within the Http4s library specifically impacts its Ember HTTP client and server implementation when operating over HTTP/2 connections. As a widely used Scala interface for building HTTP services, Http4s relies on robust protocol handling to maintain stability under various network conditions. The core of this issue lies in the logic governing how incoming HTTP/2 frames are processed during the read loop phase. In versions prior to 0.23.37 and 1.0.0-M48, the implementation exhibits a critical flaw where it accepts the declared length field from an HTTP/2 frame header without immediately validating that size against the connection's configured maximum frame size setting. This design decision creates a window of opportunity for resource exhaustion attacks by allowing large payloads to be buffered into memory before any rejection logic is applied.

From a technical perspective, the flaw stems from the order of operations in the frame parsing routine. When an HTTP/2 peer sends a frame, it includes a header that specifies the length of the payload data following the header. The vulnerable code path reads this 24-bit declared length and proceeds to allocate memory or buffer space for the entire payload immediately. Only after the full payload has been buffered does the system compare the size against the SETTINGS_MAX_FRAME_SIZE parameter advertised by the local endpoint during connection establishment. This sequence allows an unauthenticated attacker to declare a frame with a payload size near 16 MiB, even if the server or client had previously negotiated a maximum frame size of only 16 KiB through HTTP/2 settings exchange. Consequently, the system is forced to allocate and hold significantly more memory than intended before it can determine that the frame is invalid.

The operational impact of this vulnerability is severe, primarily manifesting as a denial-of-service condition due to excessive memory consumption. Because the buffer allocation occurs prior to validation, an attacker can trigger up to 1024-fold memory amplification per active connection. This means that for every kilobyte of legitimate traffic expected, an attacker could force the system to allocate megabytes of RAM. If multiple connections are targeted simultaneously or if a single persistent connection is exploited over time, this rapid memory accumulation can lead to out-of-memory errors, process crashes, or significant performance degradation as the garbage collector struggles with the inflated heap usage. The shared H2Connection.readLoop affects both server and client roles within Ember, meaning that any Http4s-based service acting as an HTTP/2 endpoint is susceptible to this attack vector unless mitigated.

This vulnerability aligns with CWE-787: Out-of-bounds Write in terms of resource allocation logic, although it more specifically represents a failure to validate input constraints prior to processing, which falls under CWE-20: Improper Input Validation. In the context of the MITRE ATT&CK framework, this behavior facilitates Resource Hijacking (T1496) and Denial of Service via memory exhaustion, allowing an unauthenticated actor to degrade or disrupt service availability without requiring valid credentials. The attack is particularly dangerous because it exploits a legitimate protocol feature—the ability to send large frames—by abusing the implementation's failure to enforce limits early in the processing pipeline.

To mitigate this risk, organizations using Http4s must upgrade to version 0.23.37 or later for the legacy branch, or version 1.0.0-M48 and above for the newer release track. The patch addresses the issue by modifying the frame parsing logic to reject oversized frames before their payloads are buffered into memory. This ensures that validation occurs at the earliest possible stage of processing, preventing unnecessary resource allocation from malformed or maliciously sized inputs. Administrators should also ensure that HTTP/2 is properly configured and monitored for unusual traffic patterns indicative of such amplification attacks, although upgrading remains the primary and most effective remediation strategy given the fundamental nature of the flaw in earlier versions.

Responsible

GitHub M

Reservation

09/10/2026

Disclosure

09/16/2026

Moderation

accepted

CPE

ready

EPSS

0.00000

KEV

no

Activities

very low

Sources

Interested in the pricing of exploits?

See the underground prices here!