CVE-2026-84747
WysokieCVSS 7.5Prawdopodobieństwo exploitacji (EPSS)
Niskie ryzykoPercentyl 40 - wyżej niż 40% wszystkich znanych CVE
Streszczenie
Podatność w Apache bRPC (wersje < 1.18.0) wynika z niezgodności interpretacji ścieżek HTTP między bRPC a frontowym proxy. Funkcja FindMethodPropertyByURI() pomija puste segmenty ścieżki (podwójne ukośniki), przez co ścieżki takie jak //flags są traktowane jak /flags, mimo że wg RFC 3986 są to różne ścieżki. Dodatkowo HTTP/2 nie waliduje pseudo-nagłówka :path, co pozwala na obejście reguł ACL proxy i dostęp do usług wewnętrznych.
Ocena ryzyka
Atakujący może ominąć kontrolę dostępu frontowego proxy i uzyskać dostęp do zastrzeżonych usług wbudowanych bRPC, takich jak /flags, co może prowadzić do nieautoryzowanej zmiany konfiguracji lub ujawnienia informacji.
Rekomendacja
Zaktualizuj Apache bRPC do wersji 1.18.0 lub zastosuj poprawkę z PR #3512. Nie włączaj flagi -http_allow_empty_path_segments na serwerach narażonych na niezaufany ruch.
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)
Interpretation conflict in the HTTP protocol implementation in Apache bRPC (version < 1.18.0) on all platforms allows remote attackers to bypass access control rules enforced by a front proxy. Root Cause: The method dispatch function FindMethodPropertyByURI() in bRPC's HTTP protocol splits the request path with a string splitter that skips empty fields, so paths containing empty path segments (consecutive slashes), such as //flags, /flags// and /flags//port, are dispatched to the same method as their collapsed form /flags. Per RFC 3986 these are distinct paths. A front proxy that enforces an ACL (e.g. blocking access to builtin services such as /flags) matches the collapsed form only, and therefore forwards the padded literal to the bRPC server, where it is dispatched as if it were the collapsed form. This differential allows //flags?setvalue= to reach a builtin service that /flags is not allowed to reach. Additionally, the HTTP/2 implementation never validated the :path pseudo-header, so requests without a :path, or with a :path that neither begins with '/' nor is the asterisk-form '*', contrary to RFC 9113 section 8.3.1, were not rejected. Affected Scenarios: Deployments of Apache bRPC behind a front proxy or gateway that performs access control (ACL) decisions on the literal request path, where the bRPC server accepts HTTP or HTTP/2 traffic from that proxy. In such deployments an attacker can send a path containing empty path segments to reach a resource that the front proxy intended to block. How to Fix: (Choose one of the following options) 1. Upgrade bRPC to version 1.18.0, which fixes this issue. 2. Apply this patch: https://github.com/apache/brpc/pull/3512 Note: After applying the fix, HTTP and HTTP/2 request paths containing empty path segments (consecutive slashes) are rejected by default, and HTTP/2 :path values that are empty or neither begin with '/' nor equal '*' are rejected. Deployments that depend on the previous lenient behavior can restore it by turning on the gflag -http_allow_empty_path_segments, which is not recommended for servers exposed to untrusted traffic.
Dane podatności pochodzą z NVD (NIST) · CISA KEV · EPSS

