深入解析Apache bRPC严重漏洞CVE-2025-59789:递归解析缺陷导致高性能系统崩溃

本文详细分析了Apache bRPC框架中编号为CVE-2025-59789的严重漏洞。该漏洞存在于json2pb组件中,攻击者通过发送深度递归的JSON数据可导致服务器因栈溢出而崩溃,影响搜索、存储、机器学习等高流量系统。官方已在1.15.0版本中通过引入递归深度限制进行修复。

CVE-2025-59789:Apache bRPC框架关键缺陷使高性能系统面临崩溃风险

在广泛应用于搜索、存储和机器学习等领域高性能系统的工业级RPC框架Apache bRPC中,发现了一个严重漏洞。该漏洞被标记为CVE-2025-59789,远程攻击者可以利用该框架解析JSON数据时存在的弱点,使服务器崩溃。

该漏洞的核心是由无限递归引起的栈耗尽问题。根据安全公告,此缺陷存在于json2pb组件中,即“在所有平台上,Apache bRPC(版本<1.15.0)中json2pb组件的未受控递归,允许远程攻击者通过发送深度递归的json数据使服务器崩溃。”

问题的根源在于底层的解析逻辑。公告解释说:“bRPC json2pb组件使用rapidjson来解析来自网络的json数据”,并且“rapidjson解析器默认使用递归解析方法”。

当攻击者发送一个具有过深递归结构的JSON有效载荷时,解析器会耗尽所有可用的栈内存,导致应用程序崩溃。“如果输入的json具有深度很大的递归结构,解析器函数可能会遇到栈溢出。”

使用bRPC处理外部流量的组织尤其容易受到攻击。报告明确指出以下危险场景:“使用bRPC服务器和protobuf消息来处理来自不受信任网络的http+json请求”,或者“直接使用JsonToProtoMessage来转换来自不受信任输入的json”。

鉴于bRPC在“搜索、存储、机器学习、广告、推荐等高性能系统”中的广泛应用,此漏洞对主要技术基础设施服务可用性的潜在影响非常重大。

维护者已经发布了一个修复程序,对数据解析的深度设置了安全上限。为减轻此威胁,建议管理员“将bRPC升级到1.15.0版本,该版本修复了此问题”。

然而,此修复附带了一个开发人员必须注意的功能变更。“该修复引入了默认值为100的递归深度限制”。这意味着具有深度嵌套结构的合法请求现在可能会被拒绝。如果此默认限制干扰了有效操作,公告指出“您可以修改gflag json2pb_max_recursion_depth 来更改此限制。”

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计