CVE-2026-84304
WysokieCVSS 8.7Streszczenie
gRPC-Go przed wersją 1.83.1 przechowuje każdą fragmentowaną ramkę HTTP/2 DATA jako osobny komunikat w buforze odbiorczym, co może prowadzić do nadmiernego zużycia pamięci przy milionach jednobajtowych ramek, nawet gdy ładunek pozostaje w granicach okien przepływu. Nieuwierzytelniony zdalny atakujący może wykorzystać równoległe strumienie do wyczerpania pamięci procesu i spowodować awarię lub zakończenie z powodu braku pamięci. Kompaktowanie bufora odbiorczego jest domyślnie włączone i można je tymczasowo kontrolować za pomocą GRPC_GO_EXPERIMENTAL_ENABLE_RECEIVE_BUFFER_COMPACTION. Problem naprawiono w wersji 1.83.1.
Ocena ryzyka
Atakujący może spowodować awarię usługi (DoS) poprzez wyczerpanie pamięci, co może prowadzić do niedostępności aplikacji korzystających z gRPC.
Rekomendacja
Zaktualizuj gRPC-Go do wersji 1.83.1 lub nowszej. Monitoruj użycie pamięci i rozważ ograniczenie liczby równoległych strumieni.
Inne podatności w gRPC-Go
Zobacz wszystkie- CVE-2026-84303Średnie
gRPC-Go przed wersją 1.83.1 zawiera podatność w filtrze HTTP xDS RBAC, gdzie nazwy nagłówków nie są konwertowane na małe litery, mimo że przychodzące klucze metadanych są małymi literami. Polityka DENY używająca nazw mieszanych, takich jak X-Role lub User-Agent, nie dopasowuje się i zawodzi w trybie otwartym, pozwalając na żądania, które powinny być odrzucone. Ta sama niezgodność wielkości liter umożliwia obejście walidacji gRFC A41 dla :Scheme lub Grpc-Status oraz zapobiega przepisaniu Host na :authority. Problem został naprawiony w wersji 1.83.1.
- GHSA-hrxh-6v49-42gfWysokie
W bibliotece grpc-go zidentyfikowano wiele podatności wpływających na silnik autoryzacji xDS RBAC oraz implementację serwera transportowego HTTP/2. Podatności te mogą prowadzić do obejścia autoryzacji (tryb Fail-Open) podczas translacji zasad.
- CVE-2026-33186Krytyczne
Podatność w gRPC-Go przed wersją 1.79.3 pozwala na obejście autoryzacji z powodu nieprawidłowej walidacji nagłówka `:path` w HTTP/2. Serwer akceptował żądania z brakującym ukośnikiem na początku ścieżki (np. `Service/Method` zamiast `/Service/Method`), co powodowało, że reguły blokujące oparte na kanonicznych ścieżkach nie były stosowane. Atakujący może wykorzystać to do ominięcia polityk bezpieczeństwa, jeśli istnieje reguła domyślnie zezwalająca na dostęp.
Oryginalny opis (angielski, źródło NVD)
gRPC-Go is the Go language implementation of gRPC. Prior to 1.83.1, internal/transport/transport.go stores each fragmented HTTP/2 DATA frame as a separate recvMsg in recvBuffer, so millions of one-byte frames can consume disproportionate heap memory even when payload bytes remain within connection and stream flow-control windows. An unauthenticated remote attacker can use concurrent multiplexed streams to exhaust process memory and cause a runtime panic or out-of-memory termination. Receive-buffer compaction is enabled by default and can be controlled temporarily with GRPC_GO_EXPERIMENTAL_ENABLE_RECEIVE_BUFFER_COMPACTION. This issue is fixed in version 1.83.1.

