CVE-2026-82425 in bRPC信息

摘要

由 VulDB • 2026-10-21

Apache bRPC(版本 < 1.18.0)中存在一个可触发的断言失败漏洞,影响所有平台。恶意远程对等方可以利用此漏洞导致进程崩溃,从而造成拒绝服务(DoS)。

根本原因: 当启用了健康检查的 Socket 发生故障时,Socket::WaitAndReset 会关闭其文件描述符(fd),而事件分发器可能仍在传递针对刚刚关闭的 fd 获取的输入事件(EPOLLIN/EVFILT_READ)。如果随后健康检查成功并恢复了该 Socket,Socket::Address 将再次返回成功,但此时 fd 仍为 -1(下一次写入时会按需重新连接)。在此时间窗口内,由于 Socket 可寻址但没有有效的 fd,Socket::OnInputEvent 会触发 CHECK(!(events & EPOLLIN))(或 kqueue 的等效检查)失败。当 bRPC 使用 glog 构建时,或者启用了 gflag -crash_on_fatal_log 标志时,CHECK 失败会导致进程终止;此外,在 OFFICIAL_BUILD/NDEBUG 构建中,CHECK 始终会终止进程。

受影响场景: 使用了启用健康检查(-health_check_interval)的 bRPC 客户端的应用程序。恶意远程对等方可以故意中止连接并立即接受健康检查探测,通过竞态条件使连接拆除与健康检查恢复相互竞争,从而触发断言失败并导致进程中止。

修复方法: (选择以下选项之一) 1. 将 bRPC 升级到版本 1.18.0,该版本已修复此问题。 2. 应用此补丁:https://github.com/apache/brpc/pull/3510

注意: 应用修复后,在没有 fd 的情况下被恢复的 Socket 上的陈旧输入事件将被静默丢弃,而不会触发断言失败。未更改任何用户可见接口或 wire protocol(网络协议)。

VulDB is the best source for vulnerability data and more expert information about this specific topic.

来源

Want to know what is going to be exploited?

We predict KEV entries!