---
id: "CVE-2026-90484"
kind: "vulnerability"
aliases: ["CVE-2026-90484"]
title: "Apache bRPC: zero-length MySQL response packet crashes the client process"
severity: "medium"
cvss: null
epss: 0.00153
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["brpc", "c++", "mysql-client", "package"]
not_affected_if: ["no-mysql-client-usage", "trusted-mysql-server"]
published_at: "2026-10-21T13:20:56+00:00"
first_seen_at: "2026-10-23T21:57:28+00:00"
updated_at: "2026-10-25T05:02:18+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-90484", "first_seen_at": "2026-10-23T21:57:28+00:00"}, {"source": "epss", "url": "https://api.first.org/data/v1/epss?cve=CVE-2026-90484", "first_seen_at": "2026-10-24T13:15:54+00:00"}]
---

# Apache bRPC: zero-length MySQL response packet crashes the client process

The MySQL client response parser in Apache bRPC dereferences a null pointer when a server sends a zero-payload-length packet. An attacker running a malicious or man-in-the-middle MySQL server can crash the bRPC client process.

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

## How to check

- Check the bRPC version in use; affected versions are those before `1.18.0` (per the fix note)
- Look for brpc MySQL client usage (`brpc::policy::MysqlReply` or `brpc/mysql.h` includes) in the codebase

## Fix

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

## Timeline

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

## From the sources

The MySQL client response parser in Apache bRPC dereferences a null pointer when the server peer sends a zero-payload-length response packet. A response packet whose declared payload length is zero is accepted by the frame-length check (is_full_package), after which the parser reads the response type byte via an unbounded 5-byte fetch that returns nullptr, and type = p[4] dereferences it, crashing the client process.



Root Cause: In brpc::policy::MysqlReply::ConsumePartialIOBuf, buf.fetch(header, 5) returns nullptr when the buffered data only holds the 4-byte header of a zero-length packet, then the code reads p[4] (and, in the fast-auth path, p2[4]) without checking for a null or zero-length packet.



Affected Scenarios: A brpc MySQL client connecting to a malicious or compromised MySQL server (or a MITM) can be crashed by a zero-length server response packet, resulting in denial of service of the client.



Fix: The fix rejects zero-length response packets (returning PARSE_ERROR_ABSOLUTELY_WRONG) both for the initial response type determination and after a fast-auth marker, before reading the type byte. Upgrade to the Apache bRPC version 1.18.0 or apply the PR patch at https://github.com/apache/brpc/pull/3536.

---

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