W Envoy 1.12.0 niezaufany zdalny klient może wysyłać żądania HTTP/2, które powodują zapis poza przeznaczonymi buforami na stercie (heap), gdy upstream korzysta z HTTP/1. Podatność ma ocenę CVSS 9.8 i umożliwia atakującemu zdalne przejęcie kontroli nad serwerem proxy lub ominięcie mechanizmów kontroli dostępu.
▸ Pokaż oryginał (EN)
An issue was discovered in Envoy 1.12.0. An untrusted remote client may send HTTP/2 requests that write to the heap outside of the request buffers when the upstream is HTTP/1. This may be used to corrupt nearby heap contents (leading to a query-of-death scenario) or may be used to bypass Envoy's access control mechanisms such as path based routing. An attacker can also modify requests from other users that happen to be proximal temporally and spatially.
Atakujący wysyła specjalnie spreparowane żądania HTTP/2 do Envoy działającego jako proxy z upstreamem HTTP/1. Błędna obsługa translacji protokołów powoduje zapis danych poza przydzielonymi buforami żądania na stercie (heap out-of-bounds write, CWE-787). Skutkuje to uszkodzeniem przyległych obszarów pamięci, co może prowadzić do scenariusza tzw. query-of-death (crash serwera) lub manipulacji danymi w pamięci. Ponadto atakujący może modyfikować żądania innych użytkowników przetwarzane w tym samym czasie i w bliskim sąsiedztwie pamięciowym.
Atakujący może doprowadzić do uszkodzenia sterty i awarii serwera proxy (denial of service), ominąć mechanizmy kontroli dostępu Envoy (np. routing oparty na ścieżce), a także modyfikować żądania innych użytkowników lub uzyskać nieautoryzowany dostęp do chronionych zasobów.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Dostępna jest również errata Red Hat: RHSA-2019:4222. Zaleca się śledzenie oficjalnych komunikatów bezpieczeństwa pod adresem https://github.com/envoyproxy/envoy/security/advisories/GHSA-gxvv-x4p2-rppp oraz jak najszybsze zaktualizowanie Envoy do wersji wolnej od podatności.
Envoyproxy Envoy w wersji 1.12.0
Podatność dotyczy wyłącznie konfiguracji, w której frontend Envoy obsługuje HTTP/2, a upstream korzysta z HTTP/1. Brak tej konfiguracji eliminuje wektor ataku.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HEnvoyproxy Envoy
APPEnvoyproxy≤ 1.12.1
Powiązane podatności
Envoy OAuth filter: pominięcie walidacji access tokena umożliwia nieautoryzowany dostęp
Bypass mechanizmów kontroli dostępu przez białe znaki w nagłówkach HTTP w Envoy
The HTTP/2 protocol allows a denial of service (server resource consumption) because request cancellation can ...
Envoy Proxy: NULL pointer dereference powodujący crash przy braku nagłówka hosta
Envoy Proxy: stack overflow przy głęboko zagnieżdżonych obiektach JSON