CVE-2026-81755
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Podwyższone ryzykoPercentyl 54 - wyżej niż 54% wszystkich znanych CVE
Streszczenie
Podatność w komponencie streaming RPC Apache bRPC (wersje < 1.18.0) pozwala zdalnemu atakującemu na wyczerpanie pamięci serwera i wywołanie odmowy usługi (DoS) poprzez wysłanie pojedynczego żądania RPC deklarującego nadmierną liczbę strumieni. Serwer tworzy osobny strumień odpowiedzi dla każdego identyfikatora z pola extra_stream_ids, bez limitu liczby akceptowanych strumieni w jednym RPC, a każdy strumień alokuje własną kolejkę bthread i zasoby.
Ocena ryzyka
Atakujący może jednym żądaniem RPC wyczerpać pamięć serwera bRPC obsługującego streaming RPC i spowodować niedostępność usługi dla wszystkich klientów. Ryzyko dotyczy każdego wdrożenia bRPC przyjmującego strumienie od niezaufanych klientów.
Rekomendacja
Zaktualizuj Apache bRPC do wersji 1.18.0 lub zastosuj patch z PR #3493. Po aktualizacji zweryfikuj nowy gflag stream_max_streams_per_request (domyślnie 64) i podnieś go tylko w aplikacjach, które legalnie wymagają większej liczby strumieni w jednym RPC.
Inne podatności w Apache bRPC
Zobacz wszystkie- CVE-2026-86249Krytyczne
W brpc::Server skonfigurowanym z ServerOptions.auth oraz ServerOptions.internal_port można obejść uwierzytelnianie, wysyłając najpierw żądanie do wbudowanej usługi na internal_port. Weryfikacja wykonywana jest tylko dla pierwszej wiadomości połączenia, a jej wynik jest przypisywany do całego połączenia.
- CVE-2026-78334Krytyczne
Brak uwierzytelniania w ścieżce strumieniowego RPC Apache bRPC (wersja < 1.18.0) pozwala zdalnemu atakującemu ominąć uwierzytelnianie serwera i wstrzykiwać lub dostarczać ramki strumieniowe, gdy serwer ma skonfigurowany Authenticator. Ramki strumieniowe nie przechodzą przez hak uwierzytelniania, a strumienie mogą być przechwycone przez inne gniazdo o tym samym identyfikatorze.
- CVE-2026-56388Krytyczne
Parser poleceń Redis w Apache bRPC akceptuje pustą tablicę RESP jako nagłówek polecenia. Zdalny nieuwierzytelniony atakujący może wysłać pustą tablicę, a następnie ciąg bulk, powodując zapis poza granicami bufora i awarię procesu.
- CVE-2026-48830Krytyczne
Nieprawidłowe uwierzytelnianie w Apache bRPC do 1.17.0 pozwala zdalnemu nieuwierzytelnionemu atakującemu ominąć uwierzytelnianie chronionych wbudowanych punktów końcowych HTTP poprzez wysłanie najpierw wbudowanego żądania HTTP na tym samym połączeniu keep-alive HTTP/1.1. Gdy włączone jest ServerOptions.auth i wbudowane usługi HTTP są publicznie wystawione, pierwsze wbudowane żądanie może oznaczyć połączenie jako uwierzytelnione dla kolejnych żądań.
- CVE-2025-60021Krytyczne
Podatność na zdalne wstrzyknięcie poleceń w wbudowanej usłudze profilera sterty w Apache bRPC (wszystkie wersje < 1.15.0) na wszystkich platformach umożliwia atakującemu wstrzyknięcie zdalnego polecenia. Przyczyną jest to, że wbudowana usługa profilera sterty bRPC (/pprof/heap) nie waliduje parametru extra_options dostarczonego przez użytkownika i wykonuje go jako argument wiersza poleceń. Atakujący mogą wykonywać zdalne polecenia za pomocą parametru extra_options. Dotyczy to scenariuszy użycia wbudowanej usługi profilera sterty bRPC do profilowania pamięci jemalloc. Naprawa: 1. Zaktualizuj bRPC do wersji 1.15.0. 2. Zastosuj poprawkę ręcznie (https://github.com/apache/brpc/pull/3101).
- CVE-2023-31039Krytyczne
Apache bRPC w wersji poniżej 1.5.0 zawiera podatność, która pozwala atakującemu na wykonanie dowolnego kodu poprzez parametr `ServerOptions::pid_file`. Atakujący, który może wpłynąć na ten parametr podczas uruchamiania serwera bRPC, może wykonać dowolny kod z uprawnieniami procesu bRPC.
- CVE-2026-90484Średnie
W kliencie MySQL biblioteki Apache bRPC występuje dereferencja wskaźnika null podczas przetwarzania odpowiedzi serwera o zerowej długości ładunku. Pakiet o zadeklarowanej długości zero przechodzi kontrolę ramki, a następnie parser odczytuje bajt typu odpowiedzi przez nieograniczone pobranie 5 bajtów, które zwraca nullptr, co powoduje odczyt p[4] i awarię procesu klienta.
- CVE-2026-87849Średnie
Podatność w parserze odpowiedzi usługi nazewniczej Discovery w Apache bRPC (wersje < 1.18.0) polega na wywoływaniu akcesorów RapidJSON przeznaczonych wyłącznie dla obiektów (FindMember) na wartościach JSON bez uprzedniego sprawdzenia ich typu. Zniekształcona odpowiedź Discovery, zawierająca nie-obiektowe wpisy w polach data/service lub na liście instancji, powoduje odczyt pamięci poza granicami i potencjalną awarię klienta bRPC.
- CVE-2026-86147Wysokie
Apache bRPC w wersji < 1.18.0 udostępnia wbudowane usługi /flags i /pprof, które pozwalają zdalnemu atakującemu na zmianę ścieżek zrzutu (bvar_dump_file, bvar_dump_tabs, mbvar_dump_file) i tworzenie katalogów lub nadpisywanie plików z uprawnieniami procesu serwera. Dodatkowo parametr ?seconds= w /pprof nie jest ograniczany, co umożliwia blokowanie procesowego profilera CPU na dowolnie długi czas.
- CVE-2026-86146Wysokie
Podatność typu HTTP request/response smuggling w bibliotece Apache bRPC w wersji < 1.18.0 wynika z niespójnej interpretacji nagłówków HTTP/1.1 przez wbudowany parser. bRPC akceptuje nieprawidłowe formy nagłówków (spacje przed dwukropkiem, spacje w wartościach Content-Length, obs-fold, traktowanie trailerów chunked jako nagłówków, listy Transfer-Encoding z odstępami), co pozwala atakującemu na przemycenie żądań lub nagłówków, gdy bRPC działa za proxy lub load balancerem.
Oryginalny opis (angielski, źródło NVD)
Uncontrolled resource consumption in the streaming RPC component of Apache bRPC (version < 1.18.0) allows a remote attacker to exhaust server memory and cause denial of service by sending a single RPC request that declares an excessive number of streams. Root Cause: In the streaming RPC feature, a client can declare multiple streams in one RPC request by putting extra stream identifiers into the repeated field `stream_settings.extra_stream_ids` of the RPC meta. On the server side, `StreamAccept` creates one response stream for every stream identifier declared by the request, without limiting the number of streams accepted in a single RPC. The request body size is only bounded by `max_body_size` (default 64MB), which is enough to carry millions of stream identifiers. Each accepted stream allocates its own bthread execution queue and associated resources, so a single crafted request can make the server create a huge number of streams and exhaust memory, leading to denial of service. Affected Scenarios: Use a bRPC server that serves streaming RPC and calls `StreamAccept` to accept streams from untrusted clients. How to Fix: (Choose one of the following options) 1. Upgrade bRPC to the 1.18.0 version. 2. Apply this patch: https://github.com/apache/brpc/pull/3493 Note: The fix adds a new gflag `stream_max_streams_per_request` with a default value of 64. Requests declaring more streams than the limit are rejected before any response stream is created. Applications that legitimately need to accept more than 64 streams in one RPC must raise this flag; otherwise such requests will fail after applying the fix.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

