近日,Github 官博披露了一个 “git clone” 命令的漏洞 CVE-2021-213,该漏洞可能导致特制的仓库在 git clone 过程中能够执行代码。
该漏洞源于 clean/smudge 过滤器(如Git LFS)中的延迟检查机制。 如果一个特别制作的版本库包含符号链接以及使用 clean/smudge 过滤器的文件,可能会导致在克隆到不区分大小写的文件系统(如 NTFS、HFS+ 或 APFS(即 Windows 和 macOS上 的默认文件系统))时执行刚检查出来的脚本。这个过程中,注意,clean/smudge 过滤器是必须的,而 Windows 默认配置了 Git LFS,因此更易受到攻击。2.15 到 2.30.1 的版本均会受到影响。
解决这个漏洞的最有效方法是升级到 2.30.2。如不能立即升级,也可以通过以下任何一种方式来降低风险:
- 通过运行 git config --global core.symlinks false 禁用 Git 中的符号链接支持。
- 禁用对进程过滤器的支持。(可以通过运行 git config --show-scope --get-regexp 'filter/\...*/\ process' 来查看系统是否配置了这些过滤器)
- 避免克隆不受信任的仓库。
GitHub 本身不容易受到这种攻击,因为其不会在服务器上存储已检查出的仓库副本,但 GitHub Pages 除外,尽管它没有使用任何 clean/smudge 过滤器。目前,该问题已在 3 月 9 日星期二发布的补丁中进行了修补。