Description
HAProxy 3.2 before 3.4.6 allows a remote unauthenticated attacker to cause a denial of service (worker-thread CPU exhaustion) via a truncated HTTP/2 PING frame. h2c_handle_ping in src/mux_h2.c does not check for a short read, unlike the other H2 frame handlers. Because the incomplete frame cannot be processed, its data is never consumed, and the H2 multiplexer tasklet is repeatedly woken by that pending data without making progress. The CPU spins until timeout http-request closes the connection, and an attacker opening many such connections can sustain high CPU usage.
Affected products
Version statuses are supplied by the assigning organization. Consult the original record for detailed ranges and platform conditions.
HAProxy HAProxy
Default version status: unaffected
3.2.0 to < 3.2.26affected3.3.0 to < 3.3.17affected3.4.0 to < 3.4.6affected3.5-dev to < 3.5-dev9affected
HAProxy HAProxy Enterprise Edition
Default version status: unaffected
3.2.0r1 to < 3.2r1-378.1259affected3.3.0r1 to < 3.3r1-377.1005affected
HAProxy Kubernetes Ingress Controller
Default version status: unaffected
3.2.0 to < 3.2.17affected
Haproxy Kubernetes Ingress Controller Enterprise
Default version status: unaffected
3.2.0 to < 3.2.17-ee1affected3.0 to < 3.0.16-ee17affected1.11 to < 1.11.14-ee11affected