CVE-2026-0994CVE-2026-0994是一个存在于google protobuf Python库中的拒绝服务漏洞。该漏洞位于google.protobuf.json_format.ParseDict()函数中,由于内部Any处理逻辑缺少递归深度计数,攻击者可以通过提供深度嵌套的google.protobuf.Any结构来绕过预设的max_recursion_depth限制。当ParseDict()函数解析这些深度嵌套的Any消息时,递归深度检查机制失效,导致Python的递归栈被耗尽,最终引发RecursionError异常。这种攻击可导致使用该库的应用服务中断,造成拒绝服务的效果。由于该函数常用于处理外部输入的JSON格式protobuf数据,攻击者可以通过构造恶意的嵌套Any消息来远程触发该漏洞,无需任何认证即可利用。
google.protobuf.json_format.ParseDict()是protobuf库提供的用于将Python字典解析为protobuf消息的工具函数。该函数内部实现了递归深度检查机制,通过max_recursion_depth参数限制最大递归深度以防止栈溢出。然而,在处理google.protobuf.Any类型的嵌套消息时,Any处理逻辑绕过了主递归深度检查。具体来说,当ParseDict()遇到Any类型的字段时,会递归地解析Any中打包的任意类型消息,但这个内部解析过程没有正确计入主递归深度计数器。攻击者可以构造类似Any{type_url='type.googleapis.com/SomeMessage',value=Any{type_url='type.googleapis.com/SomeMessage',value=Any{...}}}的深度嵌套结构,每层Any都包含另一个Any消息。由于Any解析逻辑的递归调用不增加主递归深度计数,当嵌套深度超过Python默认递归限制(通常为1000左右)时,会触发RecursionError。该漏洞的利用条件简单,只需构造足够深度的嵌套Any结构即可,无需特殊权限或用户交互。