---
id: "CVE-2026-84748"
kind: "vulnerability"
aliases: ["CVE-2026-84748"]
title: "Apache bRPC: builtin services reachable from public port over protobuf protocols"
severity: "medium"
cvss: null
epss: 0.00178
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["brpc", "c++", "microservices", "package", "self-hosted"]
not_affected_if: ["internal-only-network", "no-internal-port-config"]
published_at: "2026-10-21T13:20:03+00:00"
first_seen_at: "2026-10-23T21:57:28+00:00"
updated_at: "2026-10-25T05:02:23+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-84748", "first_seen_at": "2026-10-23T21:57:28+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-84748", "first_seen_at": "2026-10-24T13:15:54+00:00"}]
---

# Apache bRPC: builtin services reachable from public port over protobuf protocols

Apache bRPC versions before 1.18.0 fail to enforce the internal_port restriction on protobuf-based protocols, so builtin services can be invoked through the public port. An attacker who can reach that port can read runtime metrics, flags and profiler data the operator meant to keep internal.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the bRPC version your server links against; affected if below `1.18.0`.
- Look for `ServerOptions.internal_port` being set in the server code, and confirm whether the public port is reachable from untrusted networks.
- Check whether any pb-based protocol (baidu_std, hulu_pbrpc, sofa_pbrpc, public_pbrpc, nshead_mcpack, nova_pbrpc, ubrpc2pb) is enabled.

## Fix

- Upgrade Apache bRPC to `1.18.0`.
- Alternatively apply the patch from https://github.com/apache/brpc/pull/3511.

## Timeline

- 2026-10-23T21:57:28+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-84748
- 2026-10-24T13:15:54+00:00 epss https://api.first.org/data/v1/epss?cve=CVE-2026-84748

## From the sources

Improper authorization in Apache bRPC (versions < 1.18.0) on all platforms allows remote attackers to access builtin services through the public port.

Root Cause:
ServerOptions.internal_port is documented to make builtin services (and Tabbed services) reachable only from the internal port, and the HTTP/h2 dispatch path enforced this. However, all protobuf-based protocol dispatch paths (baidu_std, hulu_pbrpc, sofa_pbrpc, and the nshead-based protocols public_pbrpc, nshead_mcpack, nova_pbrpc and ubrpc2pb) computed the security_mode flag but never enforced it between method resolution and method invocation. Since builtin services share the method map with user services, a client able to reach the public port could invoke builtin services such as brpc.vars or hotspots by name over these pb protocols and disclose sensitive runtime information (metrics, flags, profiler data) that the operator intended to expose only via the internal port.

Affected Scenarios:
Use a bRPC server with ServerOptions.internal_port configured (or with builtin/Tabbed services otherwise expected to be gated by it) while the public port is reachable from an untrusted network and any pb-based protocol is enabled.

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/3511

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
