{"id":"CVE-2026-56388","kind":"vulnerability","aliases":["CVE-2026-56388"],"related":[],"title":"Apache bRPC: empty Redis array header causes out-of-bounds write and crash","description":"The Redis server command parser in Apache bRPC accepts an empty RESP array as a command header. A remote unauthenticated attacker who can reach a bRPC server with Redis service enabled can send an empty array header followed by a bulk string, causing an out-of-bounds write in the parser and crashing the process.\n\nRoot Cause:\nRedisCommandParser::ConsumeImpl rejected negative RESP array counts but accepted zero. It resized the command argument vector to zero elements and continued parsing. When a following bulk string was parsed, the only index guard was a CHECK. In configurations where fatal logs do not abort immediately, execution could continue and write to _args[0] even though the vector was empty.\n\nAffected Scenarios:\nDeployments that enable ServerOptions.redis_service and accept Redis protocol traffic from untrusted clients. The issue is reached during parsing before command handling or authentication.\n\nHow to Fix:\n1. Upgrade bRPC to version 1.18.0, which fixes this issue.\n2. Apply this patch:  https://github.com/apache/brpc/pull/3354 \n\nNote:\nThe fix rejects empty RESP arrays as invalid Redis commands and replaces the internal index CHECK with an explicit parse error so malformed command streams cannot fall through to an indexed vector write.","summary":"A malformed Redis command with an empty RESP array header makes the bRPC parser write past an empty argument vector. An unauthenticated remote client can crash the server process.","severity":"high","cvss":null,"epss":0.00289,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["apache-brpc","c++","package","self-hosted"],"not_affected_if":["default-config","redis-service-disabled"],"how_to_check":"- Check whether `ServerOptions.redis_service` is set in your bRPC server code.\n- Check the bRPC version with the package manager or build files; affected builds are below `1.18.0`.","fix":"- Upgrade Apache bRPC to `1.18.0`.\n- Or apply the patch from https://github.com/apache/brpc/pull/3354 if you cannot upgrade yet.","status":"open","published_at":"2026-10-21T12:17:21+00:00","first_seen_at":"2026-10-23T21:57:28+00:00","triaged_at":"2026-10-25T05:02:47+00:00","updated_at":"2026-10-25T05:02:47+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-10-25T05:02:47Z","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/3354 if you cannot upgrade yet.","reach":"network","title":"Apache bRPC: empty Redis array header causes out-of-bounds write and crash","impact":"low","summary":"A malformed Redis command with an empty RESP array header makes the bRPC parser write past an empty argument vector. An unauthenticated remote client can crash the server process.","category":"package","nicknames":[],"who_cares":["c++","apache-brpc","self-hosted"],"confidence":0.7,"needs_auth":"no","worst_case":"Remote unauthenticated client crashes the bRPC server process","analyst_note":"","how_to_check":"- Check whether `ServerOptions.redis_service` is set in your bRPC server code.\n- Check the bRPC version with the package manager or build files; affected builds are below `1.18.0`.","needs_analyst":false,"not_affected_if":["default-config","redis-service-disabled"],"who_is_affected":"Only servers that enable the Redis service in bRPC (ServerOptions.redis_service) and accept Redis protocol traffic from clients you do not trust. The parser runs before command handling or authentication, so authentication does not protect the path. Servers without the Redis service enabled are not described as affected.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.00062,"input_tokens":3673,"output_tokens":506,"severity_before":"unknown"},"analyst_status":null,"analyst_note":null,"search":"'-2026':16A,19A '-56388':17A,20A '/apache/brpc/pull/3354':220C '0':168C '1':204C '1.18.0':209C '2':214C 'abort':159C 'accept':66C,124C,183C 'affect':175C 'apach':1A,22B,64C 'apache-brpc':21B 'appli':215C 'arg':167C 'argument':47B,130C 'array':5A,37B,70C,93C,121C,227C 'attack':78C 'authent':200C 'bound':11A,105C 'brpc':2A,23B,41B,65C,83C,206C 'bulk':98C,141C 'c':24B 'cannot':247C 'caus':7A,100C,115C 'check':151C,237C 'client':52B,189C 'command':32B,61C,73C,129C,197C,231C,245C 'configur':153C 'consumeimpl':117C 'continu':136C,163C 'could':162C 'count':122C 'crash':14A,54B,111C 'cve':15A,18A 'deploy':177C 'element':134C 'empti':3A,35B,46B,68C,92C,174C,225C 'enabl':88C,179C 'error':242C 'even':169C 'execut':161C 'explicit':240C 'fall':248C 'fatal':155C 'fix':203C,211C,223C 'follow':95C,140C 'github.com':219C 'github.com/apache/brpc/pull/3354':218C 'guard':148C 'handl':198C 'header':6A,38B,74C,94C 'host':28B 'immedi':160C 'index':147C,236C,252C 'intern':235C 'invalid':229C 'issu':191C,213C 'log':156C 'make':39B 'malform':30B,244C 'negat':119C 'note':221C 'out-of-bound':8A,102C 'packag':25B 'pars':137C,144C,195C,241C 'parser':42B,62C,109C 'past':44B 'patch':217C 'process':57B,113C 'protocol':185C 'reach':81C,193C 'redi':4A,31B,59C,86C,184C,230C 'rediscommandpars':116C 'reject':118C,224C 'remot':51B,76C 'replac':233C 'resiz':127C 'resp':36B,69C,120C,226C 'root':114C 'scenario':176C 'self':27B 'self-host':26B 'send':90C 'server':56B,60C,84C 'serveroptions.redis':180C 'servic':87C,181C 'stream':246C 'string':99C,142C 'though':170C 'traffic':186C 'unauthent':50B,77C 'untrust':188C 'upgrad':205C 'vector':48B,131C,172C,253C 'version':208C 'write':12A,43B,106C,165C,254C 'zero':125C,133C","nicknames":[],"mitigations":[],"who_affected":"Only servers that enable the Redis service in bRPC (ServerOptions.redis_service) and accept Redis protocol traffic from clients you do not trust. The parser runs before command handling or authentication, so authentication does not protect the path. Servers without the Redis service enabled are not described as affected.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-21T12:17:21+00:00","kev":null,"cvss_vector":null,"cvss_by":null,"poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-56388","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-56388","severity":null,"published_at":"2026-10-21T12:17:21+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-56388","url":"https://api.first.org/data/v1/epss?cve=CVE-2026-56388","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"}