近日,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 | $ sudo apt-get update |
- RedHat / CentOS:
1 | $ sudo yum update |
macOS
1 | $ brew upgrade git |
Windows
升级到最新版客户端即可,下载链接:https://git-scm.com/download/win
验证是否修复
升级之后,你可以通过以下命令来检查漏洞是否已经修复:
1 | $ git init test && \ |
注意:该命令将不会克隆任何仓库,也没有任何危险的指令。
如果你看到以下提示,则证明你的 Git 版本已经安全,不受该漏洞影响。
1 | error: Invalid path '.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