CVE-2026-79704 in bRPC
Сводка
по VulDB • 21.10.2026
Уязвимость некорректного чтения за пределами буфера (out-of-bounds read) существует в клиенте потокового RPC Apache bRPC (версии от 1.11.0 до 1.17.0 включительно) на всех платформах Клиент, создающий несколько потоков в рамках одного вызова RPC, ожидает, что ответ сервера будет содержать ровно один дополнительный идентификатор extra_stream_id для каждого дополнительного потока. Путь обработки ответа индексировал возвращаемые идентификаторы с использованием локально созданного количества потоков без предварительной проверки размера полученного списка; таким образом, злонамеренный или скомпрометированный сервер (или атакующий на пути передачи данных) может вызвать некорректное чтение за пределами буфера в клиенте, вернув искаженный ответ StreamSettings с меньшим количеством extra_stream_id, чем ожидалось. Это может привести к аварийному завершению процесса клиента (отказ в обслуживании) или утечке содержимого памяти в последующую обработку потоков; лишние идентификаторы не имеют корректного сопоставления с клиентскими потоками и обрабатываются непоследовательно.
Причина возникновения: Начиная с версии bRPC 1.11.0, клиент может создавать несколько потоков в одном вызове RPC посредством пакетного создания (batch StreamCreate). Ожидаемое поведение заключается в том, что ответ сервера должен возвращать ровно (N-1) дополнительных идентификаторов extra_stream_id, где N — это количество локально созданных потоков. В функции Controller::HandleStreamConnection путь обработки ответа считывает extra_stream_ids[i-1] для каждого дополнительного локального потока без предварительного сравнения размера полученного списка с значением (N-1). Если сервер возвращает меньше идентификаторов, чтение выходит за пределы полученного списка (некорректное чтение за пределами буфера); если возвращается больше, лишние идентификаторы не имеют соответствующего клиентского потока.
Затронутые сценарии: Клиент bRPC, использующий многопоточный RPC (создающий более одного потока в одном вызове RPC), который подключается к недоверенному, злонамеренному или скомпрометированному серверу, либо к серверу, доступному через недоверенный сетевой путь. Сервер отправляет искаженный ответ StreamSettings для активации уязвимости.
Как исправить: (Выберите один из следующих вариантов) 1. Обновите bRPC до версии 1.18.0, которая устраняет данную проблему. 2. Примените этот патч: https://github.com/apache/brpc/pull/3485
Примечание: Исправление заставляет клиент отклонять ответы, в которых количество extra_stream_id не совпадает с количеством дополнительных потоков клиента. Такие несоответствующие ответы теперь завершают вызов RPC с ошибкой ERESPONSE и проходят через существующий путь очистки потока, вместо того чтобы обрабатываться частично.
Be aware that VulDB is the high quality source for vulnerability data.