近日,Git发布安全通告公布了一个可能泄露Git用户凭证的漏洞(CVE-2020-5260)。
Git使用凭证助手(credential helper)来帮助用户存储和检索凭证。但是当一个URL中包含经过编码的换行符时,可能将非预期的值注入到credential helper的协议流中。这将使恶意URL欺骗Git客户端去向攻击者发送主机凭据。当使用受影响版本 Git对恶意 URL 执行 git clone 命令时会触发该漏洞。
参考链接:
https://github.com/git/git/security/advisories/GHSA-qm7j-c969-7j4q
受影响版本
- 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
解决方案
官方已发布修复了漏洞的新版本,建议受影响用户及时下载更新。
https://github.com/git/git/releases
另外,还提供了其他方法解决或规避该问题:
- 禁用credential helper
git config --unset credential.helper
git config --global --unset credential.helper
git config --system --unset credential.helper
- 提防恶意URL
- git clone时检查URL的主机名和用户名部分是否存在编码的换行符(%0a)或凭据协议注入的证据(例如host=github.com)
- 避免将子模块与不受信任的仓库一起使用(不要使用 clone –recurse-submodules;只有在检查.gitmodules中找到url之后,才使用git submodule update)。
- 避免对不信任的URL执行 git clone。