近日,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
$ sudo apt-get update
$ sudo apt-get install git
$ sudo yum update
$ sudo yum update git
macOS
$ brew upgrade git
Windows
升级到最新版客户端即可,下载链接:https://git-scm.com/download/win
验证是否修复
升级之后,你可以通过以下命令来检查漏洞是否已经修复:
$ git init test && \
cd test && \
git update-index --add --cacheinfo 120000,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,.gitmodules
注意:该命令将不会克隆任何仓库,也没有任何危险的指令。
如果你看到以下提示,则证明你的 Git 版本已经安全,不受该漏洞影响。
error: Invalid path '.gitmodules'
fatal: git update-index: --cacheinfo cannot add .gitmodules
如果你的 Git 显示类似以下信息,并且创建一个空仓库,那么你的 Git 版本还存在此漏洞。
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
今日思想
读再多的书都不如内生动力给人带来的变化大。
—— 佚名
更多精彩热文: