CVE-2021-32778 Excessive CPU utilization when closing HTTP/2 streams

Medium 5.8 Published Updated

Attackers can cause excessive CPU utilization and denial of service by resetting many HTTP/2 streams in Envoy proxy deployments with high stream limits.

Exploited in the wild
Not known
Login needed
Not needed
Attackable
Over the internet
Victim action needed
Not needed
Fix
Available

What is CVE-2021-32778?

CVE-2021-32778 is a medium-severity denial of service vulnerability in Envoyproxy Envoy, published on 24 Aug 2021. An attacker can exploit it over the internet without logging in, with no action from the victim.

Official description

Envoy is an open source L7 proxy and communication bus designed for large modern service oriented architectures. In affected versions envoy’s procedure for resetting a HTTP/2 stream has O(N^2) complexity, leading to high CPU utilization when a large number of streams are reset. Deployments are susceptible to Denial of Service when Envoy is configured with high limit on H/2 concurrent streams. An attacker wishing to exploit this vulnerability would require a client opening and closing a large number of H/2 streams. Envoy versions 1.19.1, 1.18.4, 1.17.4, 1.16.5 contain fixes to reduce time complexity of resetting HTTP/2 streams. As a workaround users may limit the number of simultaneous HTTP/2 dreams for upstream and downstream peers to a low number, i.e. 100.

Weakness: CWE-834

Which versions are affected by CVE-2021-32778?

1 open source package ship an affected version, including envoy. It affects 1 product.

PackageAffectedFixed in
envoy BitnamiFrom 1.16.01.16.5, 1.17.4, 1.18.4, 1.19.1
Linux distribution packages (13)
servicemesh Red Hat:service_mesh:2.1::el8All versions0:2.1.0-5.el8
servicemesh-cni Red Hat:service_mesh:2.1::el8All versions0:2.1.0-5.el8
servicemesh-grafana Red Hat:service_mesh:2.1::el8All versions0:7.2.1-2.el8
servicemesh-grafana-debuginfo Red Hat:service_mesh:2.1::el8All versions0:7.2.1-2.el8
servicemesh-operator Red Hat:service_mesh:2.1::el8All versions0:2.1.0-4.el8
servicemesh-pilot-agent Red Hat:service_mesh:2.1::el8All versions0:2.1.0-5.el8
servicemesh-pilot-discovery Red Hat:service_mesh:2.1::el8All versions0:2.1.0-5.el8
servicemesh-prometheus Red Hat:service_mesh:2.1::el8All versions0:2.23.0-1.el8
servicemesh-proxy Red Hat:service_mesh:2.1::el8All versions0:2.1.0-13.el8
servicemesh-proxy-debuginfo Red Hat:service_mesh:2.1::el8All versions0:2.1.0-13.el8
servicemesh-proxy-debugsource Red Hat:service_mesh:2.1::el8All versions0:2.1.0-13.el8
servicemesh-proxy-wasm Red Hat:service_mesh:2.1::el8All versions0:2.1.0-13.el8
servicemesh-ratelimit Red Hat:service_mesh:2.1::el8All versions0:2.1.0-1.el8

Products include Envoyproxy Envoy.

How do I fix CVE-2021-32778?

Upgrade envoy to a fixed version for your release line: 1.16.5, 1.17.4, 1.18.4 or 1.19.1.

Upgrade, then put limits on request size, rate and nesting depth so one client cannot exhaust the service. More about Denial of service.

Is CVE-2021-32778 being exploited?

There is no known exploitation of CVE-2021-32778 in the wild and no public exploit code.

All Envoyproxy Envoy vulnerabilities

Sources

Also known as BIT-envoy-2021-32778, GHSA-3xh3-33v5-chcc, RHEA-2021:4051.

Is CVE-2021-32778 in your software?

Upload an SBOM and sbomify checks it against every vulnerability here, every day.

Check your SBOMs for free