CVE-2026-9277
shell-quote quote() 未验证对象令牌的形状,允许通过 .op 中的行终止符进行命令注入
- 已发布
- 2026年5月22日
- 已更新
- 2026年9月14日
- 分配 CNA
- harborist
- 观察到的证据
- 2026年8月17日
初级CVSS
nvd · CVSS 4.0
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X低 · 未来 30 天
- 百分位
- 56.1%
- 型号日期
- 2026年9月21日
EPSS 是统计估计,而不是确定性或影响衡量标准。将其与 CVSS、KEV 状态、暴露程度和您的环境相结合。
总结
shell-quote 的 `quote()` 函数未针对 `parse()` 使用的运算符模型验证对象令牌输入。`.op` 字段使用 `/(.)/g` 逐字符进行反斜杠转义,而在 JavaScript 中该正则表达式不匹配行终止符(\n、\r、U+2028、U+2029)。因此,`.op` 中的行终止符会未经转义直接传入输出;POSIX shell 将字面换行符视为命令分隔符,因此其后的任何内容都会作为第二条命令执行。该漏洞代码路径可通过两种方式触达:(1) 直接从外部输入构造 `{ op: '...\n...' }`,以及 (2) 通过 `parse(cmd, envFn)`,当 `envFn` 返回的 `.op` 受攻击者影响的对象令牌时。两者均为已记录的 API 表面。修复方式为将逐字符转义替换为严格的形状验证:`.op` 必须匹配解析器的控制运算符白名单;`{ op: 'glob', pattern }` 验证 `pattern` 并禁止行终止符;`{ comment }` 验证 `comment` 并禁止行终止符;任何其他对象形状均抛出 `TypeError`。
来源
1CVE-2026-9277 的概念验证漏洞利用程序,针对 shell-quote 库中的命令注入漏洞。通过递归 JSON 遍历并结合组合变异来触发 RCE,支持带外验证和零噪音日志记录。
负责任的使用
仅在您拥有或有权测试的系统上使用漏洞信息。 Kitploit 链接到公共研究元数据,并且不存储漏洞代码或恶意负载。