CVE-2026-44289protobufjs是一个将protobuf定义编译为JavaScript函数的库。在7.5.6和8.0.2版本之前,该库在解码嵌套protobuf数据时未限制递归深度,导致存在无限递归风险。攻击者可利用此漏洞构造恶意的protobuf二进制数据包,在解码过程中耗尽JavaScript调用栈,从而引发应用程序崩溃或拒绝服务。该问题影响未知组字段的跳过和嵌套消息字段的解码,现已修复。
该漏洞的根本原因在于protobufjs在解码过程中处理嵌套结构(如嵌套消息或未知组字段)时,没有设置递归深度的上限。当解析器接收到深度嵌套的protobuf二进制数据时,会不断进行函数调用或递归操作。由于JavaScript引擎的调用栈大小是有限的,这种无限制的递归会迅速消耗栈空间。一旦栈空间耗尽,运行时环境将抛出“Maximum call stack size exceeded”等异常,导致当前进程终止或服务不可用。攻击者无需认证即可通过网络发送特制的恶意数据包触发该漏洞,从而实施拒绝服务攻击。