willitmerge存在命令注入漏洞
漏洞详情
软件包: npm - willitmerge 受影响版本: <= 0.2.1 已修复版本: 无 严重程度: 中等
描述
willitmerge是一个用于检查拉取请求是否可合并的命令行工具。在版本0.2.1中存在命令注入漏洞。
漏洞背景
该漏洞是由于使用了不安全的子进程执行API(exec)并连接用户输入造成的。用户可通过命令行参数或目标仓库中可控的输入来利用此漏洞。
漏洞利用
PoC 1
- 安装willitmerge
- 运行以下命令:
1willitmerge --verbose --remote "https://github.com/lirantal/npq.git; touch /tmp/hel" - 确认
/tmp/hel文件在磁盘上被创建
GitHub源代码攻击向量
在lib/willitmerge.js文件的第189-197行,将仓库协作者控制的用户输入传递到git命令中:
|
|
用户可创建恶意的分支名称,例如:;{echo,hello,world}>/tmp/c
这与之前报告的pullit漏洞攻击向量类似。
资源
- 项目GitHub源代码: https://github.com/shama/willitmerge/
- 项目npm包: https://www.npmjs.com/package/willitmerge
弱点
CWE-77: 命令中使用的特殊元素中和不当(命令注入)
产品使用来自上游组件的外部影响输入构建全部或部分命令,但在发送到下游组件时,未能中和或错误地中和可能修改预期命令的特殊元素。
作者: Liran Tal