Apache bRPC JSON解析器无限递归导致栈耗尽漏洞(CVE-2025-59789)

本文详细分析了Apache bRPC(版本<1.15.0)中json2pb组件的一个安全漏洞。该漏洞源于JSON解析器(rapidjson)在处理深度嵌套的递归JSON结构时,默认采用递归方法,可能导致栈溢出,从而使服务器崩溃。文章提供了修复方案与缓解措施。

CVE-2025-59789 - Apache bRPC: 因JSON解析器中无限递归导致的栈耗尽

概述

在Apache bRPC(版本 < 1.15.0)所有平台的json2pb组件中,存在不受控制的递归问题。远程攻击者可以通过发送深度递归的JSON数据导致服务器崩溃。

漏洞描述

根本原因: bRPC的json2pb组件使用rapidjson来解析来自网络的JSON数据。rapidjson解析器默认使用递归解析方法。如果输入的JSON具有深度很大的递归结构,解析器函数可能会遇到栈溢出。

受影响场景:

  • 使用bRPC服务器和protobuf消息来处理来自不可信网络的http+json请求。
  • 或者直接使用JsonToProtoMessage来转换来自不可信输入的JSON。

如何修复

(选择以下选项之一)

  1. 将bRPC升级到版本1.15.0,该版本修复了此问题。
  2. 应用此补丁: https://github.com/apache/brpc/pull/3099

注意: 无论选择哪个选项,您都应该知道修复引入了一个默认值为100的递归深度限制。它影响以下函数: ProtoMessageToJson, ProtoMessageToProtoJson, JsonToProtoMessage, 和 ProtoJsonToProtoMessage

如果您的请求中包含JSON或protobuf消息的深度超过此限制,在应用修复后请求将失败。您可以通过修改gflag json2pb_max_recursion_depth 来更改此限制。

基本信息

  • 发布日期: 2025年12月1日 上午11:15
  • 最后修改日期: 2025年12月1日 上午11:15
  • 远程利用:
  • 来源: security@apache.org

受影响产品

尚未记录受影响的产品。 总受影响供应商: 0 | 产品: 0

解决方案

  • 将bRPC升级到1.15.0或更高版本以修复不受控制的递归问题。
  • 如果无法升级,请应用提供的补丁。
  • 如果需要,考虑调整递归深度限制。

相关咨询、解决方案和工具参考链接

CWE - 通用弱点枚举

  • CWE-674: 不受控制的递归

常见攻击模式枚举与分类 (CAPEC)

  • CAPEC-230: 带有嵌套载荷的序列化数据
  • CAPEC-231: 过大的序列化数据载荷

漏洞历史记录

2025年12月01日 - 收到来自 security@apache.org 的新CVE

  • 新增 漏洞描述、CWE(CWE-674)和第一条参考链接。

2025年12月01日 - 由 af854a3a-2127-422b-91ae-364da2661108 修改CVE

  • 新增 第二条参考链接。

漏洞评分详情

此漏洞暂无CVSS评分信息。

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