Apache bRPC 项目发布重要安全公告,披露其 Redis 协议解析器中存在一个可导致攻击者远程崩溃受影响服务的关键漏洞。该漏洞编号为 CVE-2025-54472,影响 1.14.1 之前的所有版本,包括已部分修复的 1.14.0 版本。
技术背景
Apache bRPC 是一个基于 C++ 语言的工业级 RPC(远程过程调用)框架,广泛应用于搜索、存储、机器学习、广告和推荐系统等高性能场景。
漏洞原理
漏洞根源在于 bRPC 的 Redis 解析器根据网络数据中的整数值为数组和字符串分配内存的方式。正如公告所述:
"如果从网络读取的整数值过大,可能导致内存分配错误并引发程序崩溃。"
攻击者可通过发送特制的 Redis 协议数据包,触发无限内存分配,导致应用程序耗尽内存,从而造成拒绝服务(DoS)状况。
修复尝试与局限
bRPC 团队曾在 1.14.0 版本尝试通过限制内存分配大小来修复此问题。但公告指出:
"限制检查代码实现不完善...可能导致整数溢出并绕过该限制。"
这意味着 1.14.0 版本仍然存在漏洞,只是攻击条件与早期版本略有不同。
受影响场景
存在风险的主要使用场景包括:
- 作为 Redis 服务器 - 为不受信任的客户端提供网络服务
- 作为 Redis 客户端 - 与不受信任的 Redis 服务交互
在这两种情况下,攻击者均可利用该漏洞破坏系统可用性。
修复建议
Apache bRPC 项目推荐两种解决方案:
- 升级至 bRPC 1.14.1 版本(官方修复版本)
- 手动应用 GitHub Pull Request #3050 中的官方补丁
该补丁为 Redis 解析器操作引入了 64 MB 的默认最大分配限制。公告特别提醒:
"如果您的某些 Redis 请求或响应大小超过 64MB,升级后可能会遇到错误。对于这种情况,您可以修改 gflag redis_max_allocation_size 来设置更大的限制。"
参考来源:
Apache bRPC Flaw (CVE-2025-54472) Allows Remote Denial-of-Service Attack
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)