Envoy is an open source L7 proxy and communication bus designed for large modern service oriented architectures. In affected versions after Envoy sends a locally generated response it must stop further processing of request or response data. However when local response is generated due the internal buffer overflow while request or response is processed by the filter chain the operation may not be stopped completely and result in accessing a freed memory block. A specifically constructed request delivered by an untrusted downstream or upstream peer in the presence of extensions that modify and increase the size of request or response bodies resulting in a Denial of Service when using extensions that modify and increase the size of request or response bodies, such as decompressor filter. Envoy versions 1.19.1, 1.18.4, 1.17.4, 1.16.5 contain fixes to address incomplete termination of request processing after locally generated response. As a workaround disable Envoys decompressor, json-transcoder or grpc-web extensions or proprietary extensions that modify and increase the size of request or response bodies, if feasible.
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory “belongs” to the code that operates on the new pointer.
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 1.1 | RedHat | servicemesh-proxy-0:1.1.17-2.el8 | * |
OpenShift Service Mesh 2.0 | RedHat | servicemesh-proxy-0:2.0.7-3.el8 | * |