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。
如何修复
(选择以下选项之一)
- 将bRPC升级到版本1.15.0,该版本修复了此问题。
- 应用此补丁: 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或更高版本以修复不受控制的递归问题。
- 如果无法升级,请应用提供的补丁。
- 如果需要,考虑调整递归深度限制。
相关咨询、解决方案和工具参考链接
| URL | 资源 |
|---|---|
| https://lists.apache.org/thread/ozmcsztcpxn61jxod8jo8q46jo0oc1zx | Apache邮件列表 |
| http://www.openwall.com/lists/oss-security/2025/12/01/1 | OSS安全邮件列表存档 |
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评分信息。