Description
External control of file name or path and uncontrolled resource consumption in Apache bRPC (version < 1.18.0) on all platforms allows remote attackers who can reach the builtin service port to create directories and truncate/overwrite files with the privileges of the server process, or to hold the process-wide CPU/contention profiler for an arbitrarily long time.

Root Cause:
1. The builtin /flags service allows gflags carrying a validator to be modified at runtime via ?setvalue=. The bvar/mbvar dump path gflags (bvar_dump_file, bvar_dump_tabs, mbvar_dump_file) were registered with an accept-anything validator whose only purpose was to wake the dumping thread. A remote attacker could therefore repoint the dump path (e.g. GET /flags/bvar_dump_file?setvalue=/victim/dir/target followed by GET /flags/bvar_dump?setvalue=true, or the equivalent for mbvar_dump_file, which is used verbatim without a forced suffix), making the dumping thread recursively create directories and open/truncate files at attacker-chosen locations. Tab names in bvar_dump_tabs were appended to the path without sanitization, allowing '..' to escape the configured directory.
2. The /pprof builtin service did not clamp the ?seconds= parameter to FLAGS_max_profiling_seconds (a limit that /hotspots enforced). A single request such as ?seconds=2147483647 made the handler sleep for decades while holding the process-wide gperftools CPU profiler or bthread contention profiler, so /hotspots/cpu and /hotspots/contention returned 503 for everyone else during that time.

Affected Scenarios:
Any Apache bRPC server exposing the builtin services (enabled by default on the same port as normal RPC traffic) to untrusted networks.

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

Note:
After the fix, bvar_dump_file, bvar_dump_tabs and mbvar_dump_file can no longer be modified at runtime through the /flags builtin service. They can still be changed programmatically via google::SetCommandLineOption(), taking effect on the next dump cycle. The profiling duration of /pprof is now capped by the -max_profiling_seconds gflag (default 300 seconds), which can be adjusted by the server owner.
Published: 2026-10-21
Score: n/a
EPSS: n/a
KEV: No
Impact: Arbitrary file creation/truncation with potential RCE
Action: Immediate Patch
AI Analysis

Impact

The built‑in /flags service in Apache bRPC allows a remote attacker to modify gflag values at runtime. The bvar and mbvar dump paths were registered with an accept‑any validator, letting an attacker supply any file path. By setting bvar_dump_file or mbvar_dump_file to an attacker‑chosen location and then triggering a dump, the server creates directories and truncates or overwrites files at that path. The dump thread subsequently appends tab names from bvar_dump_tabs, which include unsanitized '..' segments, enabling directory traversal and further file overwrite. Additionally, /pprof accepts an unbounded ?seconds= parameter; a very large value causes the server to hold the CPU or contention profiler for an arbitrarily long time, blocking other requests to /hotspots/cpu or /hotspots/contention.

Affected Systems

Apache Software Foundation Apache bRPC deployments using the built‑in service port on any platform. Versions earlier than 1.18.0 contain the bugs; the fixes were introduced in 1.18.0, which removes runtime modification of bvar_dump_file, bvar_dump_tabs, and mbvar_dump_file through /flags and clamps the profiling duration to the -max_profiling_seconds gflag (default 300 seconds).

Risk and Exploitability

The vulnerability gives remote actors the same privileges as the server process, so they can create or overwrite arbitrary files, potentially installing malicious code or deleting critical data. Exploitation requires only network access to the built‑in service port; no authentication is needed, making untrusted networks a clear threat vector. While no EPSS score is available and the CVE is not listed in CISA KEV, the lack of data does not mitigate the exploitation potential. Given the impact and ease of attack, a high severity rating would be expected.

Generated by OpenCVE AI on October 21, 2026 at 18:18 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Apache bRPC to version 1.18.0 or apply the patch from https://github.com/apache/brpc/pull/3523
  • Restrict access to the built‑in service port to trusted networks or enforce authentication to block unauthenticated clients
  • If profiling is required, set the -max_profiling_seconds flag to a lower value than the default 300 seconds to limit the duration of profiling

Generated by OpenCVE AI on October 21, 2026 at 18:18 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 21 Oct 2026 12:30:00 +0000

Type Values Removed Values Added
Description External control of file name or path and uncontrolled resource consumption in Apache bRPC (version < 1.18.0) on all platforms allows remote attackers who can reach the builtin service port to create directories and truncate/overwrite files with the privileges of the server process, or to hold the process-wide CPU/contention profiler for an arbitrarily long time. Root Cause: 1. The builtin /flags service allows gflags carrying a validator to be modified at runtime via ?setvalue=. The bvar/mbvar dump path gflags (bvar_dump_file, bvar_dump_tabs, mbvar_dump_file) were registered with an accept-anything validator whose only purpose was to wake the dumping thread. A remote attacker could therefore repoint the dump path (e.g. GET /flags/bvar_dump_file?setvalue=/victim/dir/target followed by GET /flags/bvar_dump?setvalue=true, or the equivalent for mbvar_dump_file, which is used verbatim without a forced suffix), making the dumping thread recursively create directories and open/truncate files at attacker-chosen locations. Tab names in bvar_dump_tabs were appended to the path without sanitization, allowing '..' to escape the configured directory. 2. The /pprof builtin service did not clamp the ?seconds= parameter to FLAGS_max_profiling_seconds (a limit that /hotspots enforced). A single request such as ?seconds=2147483647 made the handler sleep for decades while holding the process-wide gperftools CPU profiler or bthread contention profiler, so /hotspots/cpu and /hotspots/contention returned 503 for everyone else during that time. Affected Scenarios: Any Apache bRPC server exposing the builtin services (enabled by default on the same port as normal RPC traffic) to untrusted networks. 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/3523 Note: After the fix, bvar_dump_file, bvar_dump_tabs and mbvar_dump_file can no longer be modified at runtime through the /flags builtin service. They can still be changed programmatically via google::SetCommandLineOption(), taking effect on the next dump cycle. The profiling duration of /pprof is now capped by the -max_profiling_seconds gflag (default 300 seconds), which can be adjusted by the server owner.
Title Apache bRPC: Arbitrary file creation/truncation via /flags and unbounded profiling duration via /pprof
Weaknesses CWE-400
CWE-73
References

Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: apache

Published:

Updated: 2026-10-21T12:16:22.369Z

Reserved: 2026-09-05T07:14:26.207Z

Link: CVE-2026-86147

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-10-21T13:20:04.317

Modified: 2026-10-21T13:20:04.317

Link: CVE-2026-86147

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-21T18:30:14Z

Weaknesses
  • CWE-400

    Uncontrolled Resource Consumption

  • CWE-73

    External Control of File Name or Path