{"id":"CVE-2026-82942","kind":"vulnerability","aliases":["CVE-2026-82942"],"related":[],"title":"Apache bRPC: RDMA data race lets a remote client crash the server","description":"A data race in the RDMA transport of Apache bRPC (versions < 1.18.0) allows a remote client to crash the server process (denial of service) when RDMA is enabled at build time and runtime.\n\nRoot Cause:\nWhen a bRPC server negotiates RDMA with a client, the handshake completes on the TCP fd, but the server kept parsing that fd afterwards as if it were still an RPC channel. The TCP-fd input stream and the RDMA QP input stream (driven by CQ events) shared the same Socket::_read_buf, preferred_index and parsing_context without synchronization. In addition, CQ event processing could start while the handshake parsing was still in progress, and the handshake ACK phase could consume bytes belonging to the next protocol. A remote, unauthenticated client that has completed the RDMA handshake can send data on the TCP fd at the same time RDMA messages are being processed, corrupting the shared input buffer and parser state and crashing the server process (CWE-362, availability impact).\n\nAffected Scenarios:\nUse a bRPC server with RDMA support enabled (built with BRPC_WITH_RDMA and serving rdma:// / SOCKET_MODE_RDMA sockets) and accept connections from untrusted clients. Deployments without RDMA are not affected.\n\nHow to Fix:\n(Choose one of the following options)\n1. Upgrade bRPC to version 1.18.0, which fixes this issue.\n2. Apply this patch:  https://github.com/apache/brpc/pull/3505","summary":"A race between the TCP and RDMA input paths in Apache bRPC's RDMA transport corrupts a shared input buffer and parser state. A remote unauthenticated client that completed the RDMA handshake can crash the server process (denial of service).","severity":"high","cvss":null,"epss":0.0014,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["brpc","c++","package","rdma","self-hosted"],"not_affected_if":["default-config","no-rdma"],"how_to_check":"- Check the bRPC version in use, e.g. `grep -rn 'brpc' CMakeLists.txt` or the lock file, and see whether it is below `1.18.0`\n- Check whether the server was built with `BRPC_WITH_RDMA` and serves `rdma://` or `SOCKET_MODE_RDMA` sockets\n- Deployments without RDMA are not affected","fix":"- Upgrade bRPC to `1.18.0`\n- Or apply the patch from https://github.com/apache/brpc/pull/3505","status":"open","published_at":"2026-10-21T13:20:03+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T05:02:27+00:00","updated_at":"2026-10-25T05:02:27+00:00","category":"package","confidence":0.8,"triage":{"at":"2026-10-25T05:02:27Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade bRPC to `1.18.0`\n- Or apply the patch from https://github.com/apache/brpc/pull/3505","reach":"network","title":"Apache bRPC: RDMA data race lets a remote client crash the server","impact":"low","summary":"A race between the TCP and RDMA input paths in Apache bRPC's RDMA transport corrupts a shared input buffer and parser state. A remote unauthenticated client that completed the RDMA handshake can crash the server process (denial of service).","category":"package","nicknames":[],"who_cares":["brpc","c++","rdma","self-hosted"],"confidence":0.8,"needs_auth":"no","worst_case":"Remote client crashes the bRPC server process, causing denial of service.","analyst_note":"","how_to_check":"- Check the bRPC version in use, e.g. `grep -rn 'brpc' CMakeLists.txt` or the lock file, and see whether it is below `1.18.0`\n- Check whether the server was built with `BRPC_WITH_RDMA` and serves `rdma://` or `SOCKET_MODE_RDMA` sockets\n- Deployments without RDMA are not affected","needs_analyst":false,"not_affected_if":["default-config","no-rdma"],"who_is_affected":"Only bRPC servers built with RDMA support (BRPC_WITH_RDMA) and serving RDMA sockets that accept connections from untrusted clients are exposed. Servers built without RDMA, or that do not negotiate RDMA, are not affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00066,"input_tokens":3756,"output_tokens":569,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':14A,17A '-362':230C '-82942':15A,18A '/apache/brpc/pull/3505':291C '1':275C '1.18.0':77C,280C '2':285C 'accept':255C 'ack':180C 'addit':163C 'affect':233C,265C 'afterward':124C 'allow':78C 'apach':1A,36B,74C 'appli':286C 'avail':231C 'belong':185C 'brpc':2A,19B,37B,75C,103C,237C,245C,277C 'buf':154C 'buffer':45B,220C 'build':95C 'built':243C 'byte':184C 'c':20B 'caus':100C 'channel':132C 'choos':269C 'client':9A,52B,81C,109C,193C,259C 'complet':54B,112C,196C 'connect':256C 'consum':183C 'context':159C 'corrupt':41B,216C 'could':167C,182C 'cq':147C,164C 'crash':10A,59B,83C,225C 'cve':13A,16A 'cwe':229C 'data':4A,67C,202C 'denial':63B,87C 'deploy':260C 'driven':145C 'enabl':93C,242C 'event':148C,165C 'fd':116C,123C,136C,206C 'fix':268C,282C 'follow':273C 'github.com':290C 'github.com/apache/brpc/pull/3505':289C 'handshak':57B,111C,171C,179C,199C 'host':25B 'impact':232C 'index':156C 'input':33B,44B,137C,143C,219C 'issu':284C 'kept':120C 'let':6A 'messag':212C 'mode':251C 'negoti':105C 'next':188C 'one':270C 'option':274C 'packag':21B 'pars':121C,158C,172C 'parser':47B,222C 'patch':288C 'path':34B 'phase':181C 'prefer':155C 'process':62B,86C,166C,215C,228C 'progress':176C 'protocol':189C 'qp':142C 'race':5A,27B,68C 'rdma':3A,22B,32B,39B,56B,71C,91C,106C,141C,198C,211C,240C,247C,252C,262C 'read':153C 'remot':8A,50B,80C,191C 'root':99C 'rpc':131C 'runtim':98C 'scenario':234C 'self':24B 'self-host':23B 'send':201C 'serv':249C 'server':12A,61B,85C,104C,119C,227C,238C 'servic':65B,89C 'share':43B,149C,218C 'socket':152C,250C,253C 'start':168C 'state':48B,223C 'still':129C,174C 'stream':138C,144C 'support':241C 'synchron':161C 'tcp':30B,115C,135C,205C 'tcp-fd':134C 'time':96C,210C 'transport':40B,72C 'unauthent':51B,192C 'untrust':258C 'upgrad':276C 'use':235C 'version':76C,279C 'without':160C,261C","nicknames":[],"mitigations":[],"who_affected":"Only bRPC servers built with RDMA support (BRPC_WITH_RDMA) and serving RDMA sockets that accept connections from untrusted clients are exposed. Servers built without RDMA, or that do not negotiate RDMA, are not affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T13:20:03+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-82942","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-82942","severity":null,"published_at":"2026-10-21T13:20:03+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-82942","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-82942","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"}