IPBUF安全漏洞报告
English
CVE-2026-32948 CVSS 7.8 高危

CVE-2026-32948 sbt Windows平台命令注入漏洞

披露日期: 2026-03-24

漏洞信息

漏洞编号
CVE-2026-32948
漏洞类型
命令注入
CVSS评分
7.8 高危
攻击向量
本地 (AV:L)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
sbt

相关标签

RCE命令注入sbtWindowsCVSS-7.8CVE-2026-32948

漏洞概述

sbt是一款用于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,进而触发命令注入,导致恶意代码在受害者机器上以当前用户权限执行。尽管需要用户交互,该漏洞仍具有极高的危险性。

攻击链分析

STEP 1
1. 制作恶意构建定义
攻击者准备一个包含恶意依赖URI的build.sbt文件,URI片段中包含命令分隔符(如&)和恶意载荷。
STEP 2
2. 诱导用户执行构建
将恶意项目文件发送给目标用户,并诱导其在Windows系统上使用易受攻击版本的sbt执行构建或更新命令。
STEP 3
3. 触发漏洞
sbt解析依赖时,调用cmd /c执行VCS命令,未经检查的片段注入导致恶意命令被执行。
STEP 4
4. 获得执行权限
恶意代码在目标系统上以sbt运行者的权限运行,可能导致系统被完全控制。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Proof of Concept for CVE-2026-32948 // Target: sbt on Windows, version < 1.12.7 // Add to build.sbt // The URI fragment contains the command separator '&' and payload 'calc.exe' // When sbt resolves this dependency, it triggers the calculator. libraryDependencies += "com.example" % "vuln-lib" % "1.0" from "git://github.com/user/repo.git#& calc.exe"

影响范围

sbt 0.9.5 至 1.12.7

防御指南

临时缓解措施
在无法立即升级的情况下,应严格审查所有构建定义文件中的依赖来源,特别是Git仓库的URI。确保URI片段(#之后的部分)仅包含合法的分支或标签名,不包含&、|、;等特殊字符。仅运行来自受信任来源的构建任务。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表