CVE-2021-32778 Excessive CPU utilization when closing HTTP/2 streams
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.
| Package | Affected | Fixed in |
|---|---|---|
envoy Bitnami | From 1.16.0 | 1.16.5, 1.17.4, 1.18.4, 1.19.1 |
Linux distribution packages (13)
servicemesh Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-5.el8 |
servicemesh-cni Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-5.el8 |
servicemesh-grafana Red Hat:service_mesh:2.1::el8 | All versions | 0:7.2.1-2.el8 |
servicemesh-grafana-debuginfo Red Hat:service_mesh:2.1::el8 | All versions | 0:7.2.1-2.el8 |
servicemesh-operator Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-4.el8 |
servicemesh-pilot-agent Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-5.el8 |
servicemesh-pilot-discovery Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-5.el8 |
servicemesh-prometheus Red Hat:service_mesh:2.1::el8 | All versions | 0:2.23.0-1.el8 |
servicemesh-proxy Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-13.el8 |
servicemesh-proxy-debuginfo Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-13.el8 |
servicemesh-proxy-debugsource Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-13.el8 |
servicemesh-proxy-wasm Red Hat:service_mesh:2.1::el8 | All versions | 0:2.1.0-13.el8 |
servicemesh-ratelimit Red Hat:service_mesh:2.1::el8 | All versions | 0: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.
Other vulnerabilities in Envoyproxy Envoy
Sources
Also known as BIT-envoy-2021-32778, GHSA-3xh3-33v5-chcc, RHEA-2021:4051.