Git 暴远程任意代码执行漏洞 CVE-2018-11235

Posted by Mike on 2018-06-02

近日,Git 被发现存在一个潜在的远程代码执行漏洞(CVE-2018-11235)。该漏洞源于在用 git clone 时没有对 submodule 的文件夹命名做足够的验证,当用户在使用 git clone –recurse-submodules 时, 攻击者可以通过构造一个恶意的 .gitmodules 文件从而远程执行任意代码。

CVE-2018-11235 被认为是最危险的一个漏洞,恶意攻击者可借此漏洞创建包含特殊代码 Git 子模块的 Git 仓库。在用户克隆这些仓库时,攻击者可借此漏洞在用户系统上执行恶意代码。

目前,Git 和各种提供 Git 仓库托管服务的公司都开始安装相关补丁程序,以修复此危险漏洞。

CVE-2018-11235 受影响的版本

  • Git version < 2.13.7
  • Git version 2.14.x < 2.14.4
  • Git version 2.15.x < 2.15.2
  • Git version 2.16.x < 2.16.4
  • Git version 2.17.x < 2.17.1

CVE-2018-11235 不受影响的版本

  • Git version 2.14.4
  • Git version 2.15.2
  • Git version 2.16.4
  • Git version 2.17.1

CVE-2018-11235 解决方案

目前,官方已经发布新版本修复了上述漏洞。该补丁程序将包含在 Git 2.17.1 中,主要修补了两个安全漏洞 CVE-2018-11233 和 CVE-2018-11235。

受影响的用户建议尽快升级到最新版本以进行防护。这次官方不仅推出了 Git 客户端补丁程序,还包含了 Git 服务器端组件的补丁程序。服务器端的补丁程序可以帮助 Git 托管服务识别包含恶意子模块的代码仓库,并阻止恶意用户上传它们。

Linux

  • Debian / Ubuntu
1
2
$ sudo apt-get update
$ sudo apt-get install git
  • RedHat / CentOS:
1
2
$ sudo yum update
$ sudo yum update git

macOS

1
$ brew upgrade git

Windows

升级到最新版客户端即可,下载链接:https://git-scm.com/download/win

验证是否修复

升级之后,你可以通过以下命令来检查漏洞是否已经修复:

1
2
3
$ git init test && \
cd test && \
git update-index --add --cacheinfo 120000,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,.gitmodules

注意:该命令将不会克隆任何仓库,也没有任何危险的指令。

如果你看到以下提示,则证明你的 Git 版本已经安全,不受该漏洞影响。

1
2
error: Invalid path '.gitmodules'
fatal: git update-index: --cacheinfo cannot add .gitmodules

如果你的 Git 显示类似以下信息,并且创建一个空仓库,那么你的 Git 版本还存在此漏洞。

1
Initialized empty Git repository in /home/mike/test/.git/

参考文档

http://www.google.com
http://t.cn/R1W6MXC
http://t.cn/R19dTND
http://t.cn/R1JOckZ