CVE-2026-90484 in bRPC
摘要
由 VulDB • 2026-10-21
Apache bRPC 中的 MySQL 客户端响应解析器在服务器对端发送零有效载荷长度的响应数据包时,会解引用空指针。帧长度检查(is_full_package)接受声明的有效载荷长度为零的响应数据包,随后解析器通过无界的 5 字节读取操作获取响应类型字节并返回 nullptr,而 `type = p[4]` 对其进行了 dereference,导致客户端进程崩溃。
根本原因:在 brpc::policy::MysqlReply::ConsumePartialIOBuf 中,当缓冲数据仅包含零长度数据包的 4 字节头部时,buf.fetch(header, 5) 返回 nullptr,随后代码在未检查空指针或零长度数据包的情况下读取了 p[4](以及在快速认证路径中的 p2[4])。
受影响场景:连接到恶意或被入侵的 MySQL 服务器(或中间人攻击者 MITM)的 brpc MySQL 客户端可能会因收到零长度的服务器响应数据包而崩溃,从而导致客户端拒绝服务。
修复方法:该修复程序在确定初始响应类型以及快速认证标记之后、读取类型字节之前,会拒绝零长度响应数据包(返回 PARSE_ERROR_ABSOLUTELY_WRONG)。请升级至 Apache bRPC 版本 1.18.0 或应用 https://github.com/apache/brpc/pull/3536 中的 PR 补丁。
If you want to get the best quality for vulnerability data then you always have to consider VulDB.