{"id":"CVE-2026-90484","kind":"vulnerability","aliases":["CVE-2026-90484"],"related":[],"title":"Apache bRPC: zero-length MySQL response packet crashes the client process","description":"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.\n\n\n\nRoot 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.\n\n\n\nAffected 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.\n\n\n\nFix: 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.","summary":"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.","severity":"medium","cvss":null,"epss":0.00153,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["brpc","c++","mysql-client","package"],"not_affected_if":["no-mysql-client-usage","trusted-mysql-server"],"how_to_check":"- Check the bRPC version in use; affected versions are those before `1.18.0` (per the fix note)\n- 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`\n- Or apply the patch from https://github.com/apache/brpc/pull/3536","status":"open","published_at":"2026-10-21T13:20:56+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T05:02:18+00:00","updated_at":"2026-10-25T05:02:18+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T05:02:18Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Apache bRPC to `1.18.0`\n- Or apply the patch from https://github.com/apache/brpc/pull/3536","reach":"network","title":"Apache bRPC: zero-length MySQL response packet crashes the client process","impact":"low","summary":"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.","category":"package","nicknames":[],"who_cares":["brpc","c++","mysql-client"],"confidence":0.7,"needs_auth":"no","worst_case":"Client process crashes, causing denial of service","analyst_note":"","how_to_check":"- Check the bRPC version in use; affected versions are those before `1.18.0` (per the fix note)\n- Look for brpc MySQL client usage (`brpc::policy::MysqlReply` or `brpc/mysql.h` includes) in the codebase","needs_analyst":false,"not_affected_if":["no-mysql-client-usage","trusted-mysql-server"],"who_is_affected":"Only applications using bRPC's MySQL client to connect to a MySQL server that may be malicious or reachable by a man-in-the-middle. Teams whose bRPC use does not include the MySQL client, or who only talk to trusted MySQL servers, are at much lower risk.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"medium"},"cost_usd":0.000633,"input_tokens":3692,"output_tokens":528,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-90484':15A,18A '/apache/brpc/pull/3536.':275C '1.18.0':266C '4':131C,157C,171C,180C '5':122C,147C 'absolut':239C 'accept':100C 'affect':191C 'apach':1A,31B,72C,263C 'appli':268C 'attack':48B 'auth':177C,253C 'brpc':2A,19B,32B,63B,73C,141C,194C,264C 'buf.fetch':145C 'buffer':152C 'byte':118C,123C,158C,259C 'c':20B 'caus':139C 'check':106C,182C 'client':11A,23B,27B,64B,68C,136C,196C,226C 'code':168C 'compromis':202C 'connect':197C 'consumepartialiobuf':144C 'crash':9A,61B,134C,210C 'cve':13A,16A 'data':153C 'declar':94C 'denial':221C 'derefer':33B,74C,132C 'determin':247C 'error':238C 'fast':176C,252C 'fast-auth':175C,251C 'fetch':124C 'fix':227C,229C 'frame':104C 'frame-length':103C 'full':108C 'github.com':274C 'github.com/apache/brpc/pull/3536.':273C 'header':146C,159C 'hold':155C 'initi':244C 'length':5A,45B,87C,96C,105C,164C,189C,215C,233C 'malici':51B,200C 'man':54B 'man-in-the-middl':53B 'marker':254C 'middl':57B 'mitm':207C 'mysql':6A,22B,26B,58B,67C,195C,203C 'mysql-client':21B 'mysqlrepli':143C 'null':35B,76C,185C 'nullptr':127C,149C 'p':130C,170C 'p2':179C 'packag':24B,109C 'packet':8A,46B,89C,92C,165C,190C,218C,235C 'pars':237C 'parser':29B,70C,113C 'patch':271C 'path':178C 'payload':44B,86C,95C 'peer':81C 'pointer':36B,77C 'polici':142C 'pr':270C 'process':12A,65B,137C 'read':114C,169C,256C 'reject':230C 'respons':7A,28B,69C,88C,91C,116C,217C,234C,245C 'result':219C 'return':126C,148C,236C 'root':138C 'run':49B 'scenario':192C 'send':40B,82C 'server':39B,59B,80C,204C,216C 'servic':223C 'type':117C,129C,246C,258C 'unbound':121C 'upgrad':260C 'version':265C 'via':119C 'whose':93C 'without':181C 'wrong':240C 'zero':4A,43B,85C,98C,163C,188C,214C,232C 'zero-length':3A,162C,187C,213C,231C 'zero-payload-length':42B,84C","nicknames":[],"mitigations":[],"who_affected":"Only applications using bRPC's MySQL client to connect to a MySQL server that may be malicious or reachable by a man-in-the-middle. Teams whose bRPC use does not include the MySQL client, or who only talk to trusted MySQL servers, are at much lower risk.","tier":"C","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T13:20:56+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-90484","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-90484","severity":null,"published_at":"2026-10-21T13:20:56+00:00","modified_at":"2026-10-22T16:56:37+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","fetched_at":"2026-10-23T22:29:01+00:00","note":null},{"source":"epss","external_id":"CVE-2026-90484","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-90484","severity":null,"published_at":null,"modified_at":null,"first_seen_at":"2026-10-24T13:15:54+00:00","fetched_at":"2026-10-24T13:15:54+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}