CVE-2026-32948sbt是一款用于Scala和Java的构建工具。在0.9.5至1.12.7之前的版本中,Windows平台存在命令注入漏洞。sbt利用Process("cmd", "/c", ...)执行VCS命令(如git)时,未对用户控制的URI片段进行验证。由于cmd /c会将&、|、;解释为命令分隔符,攻击者可构造恶意片段执行任意系统命令。该问题已在1.12.7版本中修复。
该漏洞的根源在于Windows环境下的命令拼接处理不当。sbt作为构建工具,在处理版本控制系统(VCS)依赖时,会调用底层的`cmd /c`指令来执行git、hg或svn命令。由于代码逻辑未对用户提供的URI片段(用于指定分支、标签或修订号)进行安全过滤,直接将其传递给命令行接口。Windows的CMD解释器会将`&`、`|`和`;`视为命令分隔符,允许在一条命令行中顺序执行多条指令。攻击者只需在项目的构建定义文件(如`build.sbt`)中植入一个特殊的依赖地址,其片段部分包含分隔符和恶意载荷(例如`& calc`)。当用户执行构建或更新操作时,sbt便会解析该URI,进而触发命令注入,导致恶意代码在受害者机器上以当前用户权限执行。尽管需要用户交互,该漏洞仍具有极高的危险性。