Git 社区披露了一个影响clone 和submodule 命令的安全漏洞,当存在漏洞的机器访问恶意库时,这些命令可以远程执行代码。这个由Mitre 分配了编号 CVE-2018-17456 的漏洞已在Git 2.19.1 中修复。
要触发该漏洞,恶意库可以伪造一个.gitmodules,其中包含以破折号开头的URL。这将影响git clone --recurse-submodules 和git submodule update --recursive,因为它们会将这个以破折号开头的URL 递归地传递给git clone 或git submodule 子进程,它们会将该URL 解释为命令选项。这可能导致在本地机器上执行任意命令。这个漏洞类似于 CVE-2017-1000117 ,它也是通过伪造以破折号开头的 ssh URL 实现选项注入攻击,由 git 执行的 ssh 子进程会将这些 URL 解释为命令选项。目前还没有任何已知的不法行为。
我们还利用这段时间扫描了 GitHub 上所有的库,寻找它实际被用于实施攻击的证据。我们很高兴地告诉大家,没有发现攻击实例(现在,在我们的检测下,就没有实例可以添加了)。
正如 @joernchen 提交的修复漏洞的PR 所显示的那样,修复本身非常简单。不过,这一发现为.gitmodules 的全面审计提供了机会,它会针对其中的路径和URL 实现更严格的检查。
如前所述,Git 2.19.1 包含了对这个漏洞的修复。另外,该补丁还被反向移植到了2.14.5、2.15.3、2.16.5、2.17.2 和2.18.1 版本。由于git 集成到了GitHub 项目(如GitHub Desktop 和Atom)中,这些项目也已经得到了修复,所以你最好尽快升级它们。
评论 1 条评论