Podatność w bibliotece Google gRPC (wersje przed 2017-03-29) umożliwia zapis poza granicami bufora (out-of-bounds write) na stercie poprzez mechanizm use-after-free powiązany z funkcją grpc_call_destroy. Luka otrzymała ocenę krytyczną (CVSS 9.8) i może zostać wykorzystana zdalnie bez żadnego uwierzytelnienia.
▸ Pokaż oryginał (EN)
Google gRPC before 2017-03-29 has an out-of-bounds write caused by a heap-based use-after-free related to the grpc_call_destroy function in core/lib/surface/call.c.
Błąd wynika z nieprawidłowego zarządzania pamięcią w funkcji grpc_call_destroy znajdującej się w pliku core/lib/surface/call.c. Po zwolnieniu obszaru pamięci na stercie (heap) biblioteka nadal odwołuje się do tego obszaru (use-after-free), co prowadzi do zapisu danych poza przeznaczonymi granicami bufora (CWE-787). Atakujący może wywołać tę sytuację zdalnie, przesyłając odpowiednio spreparowane żądania do usługi korzystającej z podatnej wersji gRPC.
Atakujący może uzyskać pełną kontrolę nad procesem serwera — potencjalnie prowadząc do wykonania dowolnego kodu (RCE), ujawnienia poufnych danych lub całkowitej niedostępności usługi (awaria procesu).
Należy zaktualizować bibliotekę gRPC do wersji zawierającej poprawkę wprowadzoną po 2017-03-29. Szczegóły dostępne w referencji: https://github.com/grpc/grpc/pull/10353. Jeśli natychmiastowa aktualizacja jest niemożliwa, należy ograniczyć dostęp sieciowy do usług korzystających z podatnej wersji gRPC.
Google gRPC we wszystkich wersjach opublikowanych przed 2017-03-29 (commit odpowiadający pull request #10353).
Podatność została wykryta za pomocą projektu oss-fuzz (issue #726) i naprawiona poprzez pull request #10353 w repozytorium GitHub gRPC.
CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HGrpc
APPGrpc≤ 1.2.1
Powiązane podatności
gRPC-Go: Authorization Bypass przez nieprawidłowy nagłówek HTTP/2 :path
Heap-based buffer overflow w Google gRPC — zapis poza granicami pamięci
Zapis poza granicami bufora w Google gRPC (gpr_free)
Przepełnienie bufora sterty (heap buffer overflow) w Google gRPC — zapis poza granicami
Lack of error handling in the TCP server in Google's gRPC starting version 1.23 on posix-compatible platforms ...