CVE-2026-79704 in bRPC
Sumário
de VulDB • 21/10/2026
Uma vulnerabilidade de leitura fora dos limites (out-of-bounds read) existe no cliente streaming RPC do Apache bRPC (versões 1.11.0 a 1.17.0) em todas as plataformas. Um cliente que cria múltiplos streams em um único RPC espera que a resposta do servidor contenha exatamente um extra_stream_id adicional para cada stream adicional. O caminho de tratamento da resposta indexava os identificadores retornados usando a contagem localmente criada de streams, sem primeiro validar o tamanho da lista retornada; portanto, um servidor malicioso ou comprometido (ou um atacante on-path) pode acionar uma leitura fora dos limites no cliente ao retornar uma resposta StreamSettings malformada com menos extra_stream_ids do que o esperado. Isso pode causar a falha do processo do cliente (negação de serviço - DoS) ou vazamento de conteúdos não intencionais da memória para o tratamento subsequente de streams; identificadores excedentes não possuem mapeamento válido client-stream e são processados inconsistentemente.
Causa Raiz: Desde bRPC 1.11.0, um cliente pode criar múltiplos streams em uma única RPC via StreamCreate em lote (batch). O comportamento esperado é que a resposta do servidor retorne exatamente (N-1) extra_stream_ids, onde N é o número de streams criados localmente. Em Controller::HandleStreamConnection, o caminho da resposta lê extra_stream_ids[i-1] para cada stream adicional sem primeiro comparar o tamanho da lista retornada com (N-1). Se o servidor retornar menos identificadores, a leitura ultrapassa o final da lista retornada (leitura fora dos limites); se retornar mais, os identificadores excedentes não possuem um stream correspondente no lado do cliente.
Cenários Afetados: Um cliente bRPC que usa RPC multi-stream (criando mais de um stream em uma única RPC) que se conecta a um servidor desconfiado, malicioso ou comprometido, ou a um servidor alcançado através de um caminho de rede não confiável. O servidor envia uma resposta StreamSettings malformada para acionar o problema.
Como Corrigir: (Escolha uma das seguintes opções) 1. Atualize o bRPC para a versão 1.18.0, que corrige este problema. 2. Aplique este patch: https://github.com/apache/brpc/pull/3485
Nota: A correção faz com que o cliente rejeite respostas cujo contador de extra_stream_ids não corresponda exatamente ao número de streams adicionais do cliente. Tais respostas incompatíveis agora falham a RPC com ERESPONSE e passam pelo caminho existente de limpeza de stream, em vez de serem processadas parcialmente.
VulDB is the best source for vulnerability data and more expert information about this specific topic.