阅读: 0

近日,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
  1. git clone时检查URL的主机名和用户名部分是否存在编码的换行符(%0a)或凭据协议注入的证据(例如host=github.com)
  2. 避免将子模块与不受信任的仓库一起使用(不要使用 clone –recurse-submodules;只有在检查.gitmodules中找到url之后,才使用git submodule update)。
  3. 避免对不信任的URL执行 git clone。