CVE-2026-84747 in bRPC
Zusammenfassung
von VulDB • 21.10.2026
Interpretationskonflikt in der HTTP-Protokollimplementierung von Apache bRPC (Version < 1.18.0) auf allen Plattformen ermöglicht es Remote-Angriffspersonen, die Zugriffskontrollregeln zu umgehen, die von einem vorgeschalteten Proxy erzwungen werden.
Ursache: Die Methoden-Dispatch-Funktion `FindMethodPropertyByURI()` in bRPCs HTTP-Protokoll teilt den Anforderungspfad mit einem String-Splitter, der leere Felder überspringt. Daher werden Pfade, die leere Pfadsegmente (aufeinanderfolgende Schrägstriche) enthalten, wie `//flags`, `/flags//` und `/flags//port`, an dieselbe Methode weitergeleitet wie ihre zusammengekürzte Form `/flags`. Gemäß RFC 3986 sind dies jedoch unterschiedliche Pfade. Ein vorgeschalteter Proxy, der eine ACL (Access Control List) durchsetzt (z. B. das Blockieren des Zugriffs auf integrierte Dienste wie `/flags`), stimmt nur mit der zusammengekürzten Form überein und leitet daher den literalen Pfad an den bRPC-Server weiter, wo er so behandelt wird, als wäre es die zusammengekürzte Form. Diese Diskrepanz ermöglicht es `//flags?setvalue=`, einen integrierten Dienst zu erreichen, auf den `/flags` keinen Zugriff hat. Darüber hinaus validierte die HTTP/2-Implementierung den Pseudo-Header `:path` niemals; daher wurden Anforderungen ohne ein `:path` oder mit einem `:path`, das weder mit '/' beginnt noch die Asterisk-Form '*' ist (im Widerspruch zu Abschnitt 8.3.1 von RFC 9113), nicht abgelehnt.
Betroffene Szenarien: Einsätze von Apache bRPC hinter einem vorgeschalteten Proxy oder Gateway, der Zugriffskontrollentscheidungen (ACL) auf dem literalen Anforderungspfad trifft, wobei der bRPC-Server HTTP- oder HTTP/2-Traffic von diesem Proxy akzeptiert. In solchen Einsätzen kann eine Angreifende einen Pfad mit leeren Pfadsegmenten senden, um ein Ressourcen zu erreichen, die der vorgeschaltete Proxy eigentlich blockieren wollte.
Lösung: (Wählen Sie eine der folgenden Optionen) 1. Aktualisieren Sie bRPC auf Version 1.18.0, welche dieses Problem behebt. 2. Wenden Sie diesen Patch an: https://github.com/apache/brpc/pull/3512
Hinweis: Nach Anwendung des Fixes werden HTTP- und HTTP/2-Anforderungspfade mit leeren Pfadsegmenten (aufeinanderfolgende Schrägstriche) standardmäßig abgelehnt, sowie HTTP/2 `:path`-Werte, die leer sind oder weder mit '/' beginnen noch '*' entsprechen. Einsätze, die vom vorherigen nachsichtigen Verhalten abhängen, können dieses wiederherstellen, indem sie das gflag `-http_allow_empty_path_segments` aktivieren, was für Server, die unzuverlässigem Traffic ausgesetzt sind, nicht empfohlen wird.
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.