Technical Tip: Blocking HTTP/2 Bomb attacks for CVE-2026-49975
Description
This article describes the way to minimize the effect of CVE-2026-49975 through FortiWeb.
Scope
FortiWeb.
Solution
Here is some background about this vulnerability.
CVE-2026-49975, dubbed the HTTP/2 Bomb, is a critical remote Denial-of-Service(DoS) vulnerability affecting the default HTTP/2 configurations of major web servers, including NGINX, Apache HTTPD, Microsoft IIS, Envoy, and Cloudflare Pingora.
Discovered by security firm Calif using OpenAI's Codex, it combines a unique HPACK compression-bomb variant with a Slowloris-style flow-control window hold to cause immediate server outages and memory exhaustion.
As a full reverse proxy, FortiWeb terminates HTTP/2 client connections and applies its own HTTP/2 limits and protocol constraints to client traffic, constraining the header-abuse component of the attack.
FortiWeb v7.6.9 strengthens this coverage with dedicated HTTP/2 controls: it extends the per-request header-line limit to HTTP/2 and adds a configurable minimum HTTP/2 Initial Window Size to constrain the flow-control hold.
The exploit combines two phases:
Bookkeeping compression bomb (HPACK).
Unlike traditional compression bombs that expand large stuffed strings to trip decoded-size limits, this variant uses a nearly empty header payload.
The amplification comes from the per-entry bookkeeping and structural tables the server allocates around each header field, so the decoded-size limit never fires, because there is almost nothing to decode.
Where a server caps the header-field count instead, the Cookie header can be split into many small fields to bypass the limit ( permitted by RFC 9113 8.2.3).Flow-Control Slowloris hold.
With the internal memory overhead forced, the client advertises a zero-byte flow-control window, preventing the server from sending a response while it resets send timeouts. The connection stays active, trapping the allocated memory indefinitely.
Because both vectors use standard, valid HTTP/2 frame properties, an unauthenticated attacker on a basic home computer over a 100 Mbps connection can exhaust up to 32GB of server memory in roughly 20 seconds, taking targeted infrastructure offline almost instantly. Proof-of-concept exploit code is publicly available.
Mitigation and Protection:
Organizations should audit their web-server footprint and apply vendor updates immediately:
NGINX: Fixed in version 1.29.8+ (adds a header-count limit, default 1000). If unable to upgrade, disable HTTP/2.
Apache HTTPD: Fixed in late-May releases (cookie fields now count against the request-field limit; mod_http2 update).
Microsoft IIS, Cloudflare Pingora: Default configurations are reported as exposed at the time of writing; monitor memory thresholds or temporarily disable HTTP/2 on unpatched public endpoints if no downstream mitigation is in place.
Envoy (CVE-2026-47774): Fixed in versions 1.35.11, 1.36.7, 1.37.3, and 1.38.1.
Perimeter protection and origin patching are complementary — apply both.
FortiWeb Protection:
FortiWeb sits in front of applications as a full reverse proxy. It does not pass HTTP/2frames straight through to the origin; rather, it terminates the client connection, inspects the traffic, and re-originates a clean connection to the back-end.
This lets FortiWeb apply its own HTTP/2 limits and protocol constraints to client traffic before it reaches the servers.
For this Vulnerability - HTTP/2 bomb CVE-2026-49975, some signatures will be available soon.
Recommended actions on FortiWeb:
Upgrade to FortiWeb v7.6.9.
Out of the box, the Number of Header Lines in Request constraint is enabled by default with an alert & deny action and is now enforced for HTTP/2 as well as HTTP/1.x, providing baseline protection against the header-abuse component of this attack with no additional configuration.HTTP protocol constraint Policy:
Navigate to Web Protection -> Protocol -> HTTP -> HTTP Protocol Constraints -> Create new.
Give a name and expand the HTTP/2 option below.
Tune the numbers for HTTP/2 max requests and Number of Concurrent Streams to as low as possible, based on the Application requirement, then set action Alert & Deny to block the requests and streams exceeding that number. HTTP/2 Max Requests caps the number of requests allowed over a single HTTP/2connection, limiting how far an attacker can push multiplexed malicious streams on one connection.
FortiWeb also enforces a built-in upper bound on the number of header lines a single request may carry, inherently limiting the dense header structures the HTTP/2Bomb depends on.

DOS Protection.
Navigate to DOS Protection -> Network -> TCP flood prevention -> Create new.
Set the TCP Connection Number Limit and keep it as low as possible based on the application requirements, then set the action to Alert & Deny for exceeding numbers, then select OK.
Call this TCP Flood Prevention policy in the DOS protection Policy, then later assign this DOS Protection policy in the Web-Protection profile assigned for the concerned Server Policy.

Tune Server Policy.
This config could help to slow down the traffic to the back-end to minimize the effect.
FortiWeb # config server-policy policy
FortiWeb (policy) # edit "CVE-2026-49975 - HTTP/2 Bomb"
FortiWeb (CVE-2026-49975~-) # set send-buffers-number 50
FortiWeb (CVE-2026-49975~-) # end
FortiWeb #
Note: The numbers above are only for reference and not a recommendation. Tune according to the application requirement; smaller is better, and Signatures will be added soon in future releases with the fix in the code.
Vulnerability of FortiWeb itself to CVE-2026-49975.
FortiWeb is not one of the affected servers; as a reverse proxy, it terminates client connections and applies its own HTTP/2 limits and protocol constraints. These constrain the header-abuse component of the attack, and FortiWeb v7.6.9 adds dedicated HTTP/2controls (header-line enforcement and a minimum Initial Window Size) covering the flow-control component. Origin servers should still be patched.
Action required.
After upgrading to FortiWeb v7.6.9, the Number of Header Lines in Request constraint is enabled by default with an alert & deny action and enforced on HTTP/2 traffic, giving baseline protection against the header-abuse component with no extra configuration. For deeper, application-specific protection, tune that limit along with the HTTP/2 Initial Window Size and HTTP/2 Max Requests on Web Protection policies. Continue to patch the origin servers.
Patching back-end servers.
Perimeter protection and origin patching are complementary; apply both.
