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.
The product performs an iteration or loop without sufficiently limiting the number of times that the loop is executed.
Name | Vendor | Start Version | End Version |
---|---|---|---|
Envoy | Envoyproxy | 1.16.0 (including) | 1.16.5 (excluding) |
Envoy | Envoyproxy | 1.17.0 (including) | 1.17.4 (excluding) |
Envoy | Envoyproxy | 1.18.0 (including) | 1.18.4 (excluding) |
Envoy | Envoyproxy | 1.19.0 (including) | 1.19.0 (including) |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-0:2.1.0-5.el8 | * |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-grafana-0:7.2.1-2.el8 | * |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-operator-0:2.1.0-4.el8 | * |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-prometheus-0:2.23.0-1.el8 | * |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-proxy-0:2.1.0-13.el8 | * |
OpenShift Service Mesh 2.1 | RedHat | servicemesh-ratelimit-0:2.1.0-1.el8 | * |