packagist.org远程代码执行漏洞

ang010ela 漏洞 2018年9月5日发布

导语:研究人员Max Justicz日前发现了packagist.org网站的一个远程代码执行漏洞,本文对该漏洞进行分析。

研究人员Max Justicz日前发现了packagist.org网站的一个远程代码执行漏洞。packagist.org是php包管理器Composer的默认包服务器,Packagist目前服务的下载量大约是每个月4亿。

图片.png

研究人员发现的packagist.org bug技术上并没有非常创新,但研究人员认为Packagist是一个主流的服务,因此写了这篇博客(近期通过供应链进行攻击的例子也很多,攻击者也可能通过Packagist网站的远程代码执行漏洞发起供应链攻击)。

漏洞

在网站的文本域内输入$(execute me)就会在shell中执行命令。

图片.png

漏洞产生原因

用户向Packagist上传包时会提供一个到Git、Perforce、Subversion、Mercurial库的URL。为了识别URL是指向哪种库,URL中会含有shell输出的git、p4、svn、hg等命令作为参数。

研究人员用运行shell命令的ProcessExecutor::execute来打印请求执行的命令。对$(sleep 1)的URL,会运行下面的命令:

git ls-remote --heads '$(sleep 1)'
hg identify '$(sleep 1)'
p4 -p $(sleep 1) info -s
svn info --non-interactive $(sleep 1)

从上面的命令可以看出,p4和svn wrapper会不适当地泄露URL参数。

缓解措施

研究人员将漏洞报告给security@packagist.org ,Packagist团队很快就修复了该漏洞。

图片.png

更多参见:https://github.com/composer/composer/commit/bf125295df9da84c44989e33f9f84b4ed4f8ea56

结论

包管理器的安全性一直不理想,包管理器服务器运维人员应该想到有一天会被入侵。

去年rubygems.org出现了任意代码执行漏洞,一些npm官方镜像中也出现了代码执行漏洞,PyPI出现了任意释放文件删除漏洞,使用主流CDN的npm站点出现了服务器任意JS执行漏洞,现在packagist.org又出现了任意代码执行漏洞。其他网站也出现了类似漏洞,甚至存在合法包文件被黑的风险。

本文翻译自:https://justi.cz/security/2018/08/28/packagist-org-rce.html如若转载,请注明原文地址: http://www.4hou.com/vulnerable/13334.html
点赞 4
  • 分享至
取消

感谢您的支持,我会继续努力的!

扫码支持

打开微信扫一扫后点击右上角即可分享哟

发表评论