CVE-2026-44293protobufjs是一个将Protocol Buffers定义编译为JavaScript代码的流行库。在7.5.6和8.0.2版本之前,该库在生成用于toObject转换的JavaScript函数时存在安全缺陷。具体来说,生成的代码可能包含源自模式控制的bytes字段默认值的不安全表达式。攻击者可以通过构造一个特制的描述符,将bytes字段的默认值设置为非字符串类型(如恶意代码片段),从而导致攻击者控制的代码被注入到生成的转换函数中。这可能导致远程代码执行,严重影响系统安全。该漏洞已在后续版本中得到修复。
该漏洞的根源在于protobufjs的代码生成器未能正确处理bytes字段的默认值。当protobufjs处理包含bytes字段的模式定义并生成对应的toObject转换函数时,它会将字段的默认值嵌入到生成的JavaScript代码中。在受影响的版本中,代码生成过程缺乏对默认值类型的严格校验和转义。如果攻击者提供一个恶意的protobuf定义(JSON或.proto格式),其中bytes字段的defaultValue被设置为一个包含JavaScript语法的字符串或对象,编译器会直接将其拼接进函数体。例如,将defaultValue设置为`process.exit(1)`或任意函数调用。当应用程序调用生成的toObject方法处理数据时,这段注入的恶意代码就会在当前的JavaScript运行时环境中被执行,从而实现远程代码执行(RCE)。由于protobufjs常用于解析外部配置或数据接口,此漏洞具有极高的利用价值。