CVE-2026-28291simple-git是一个用于在Node.js环境中运行原生Git命令的库。在3.31.1及之前的版本中,存在一个严重的安全漏洞,允许攻击者通过操纵Git选项执行任意命令。该漏洞是由于针对CVE-2022-25860的修复不完整造成的。攻击者可以利用Git灵活的选项解析机制(如使用`-vu`、`-4u`等组合),绕过基于正则表达式的黑名单安全检查,从而执行原本被拦截的危险操作(如`--upload-pack`),进而控制服务器。
该漏洞的根本原因在于`simple-git`库中用于阻止不安全Git操作的插件(block-unsafe-operations-plugin)依赖于正则表达式黑名单来拦截危险参数(例如`-u`或`--upload-pack`)。然而,Git命令行工具的参数解析机制非常灵活,允许将短选项进行组合(例如`-vu`实际上等同于`-v -u`),且存在大量有效的变体。攻击者可以构造特定的参数字符串(如`-4u`、`-nu`),这些字符串能够被Git解析为包含危险选项,但不会触发`simple-git`中的正则匹配。通过这种方式,攻击者可以成功绕过安全检查,利用`--upload-pack`等参数注入并执行任意系统命令,实现远程代码执行。