首页 > 体育 >

Git自曝可让黑客执行任意代码的漏洞,所有使用者皆受影响!

2018-05-31 05:03:03 网络整理 阅读:191 评论:0

微软Visual Studio团队服务专案经理Edward ThomsonMay在DevOps博客提到,近日Git社群发现了Git存在一个可让黑客执行任意代码的漏洞,他呼吁,开发者应尽速更新客户端应用程式,而微软也已经采取进一步防护,避免恶意代码储存库被推送到微软的代码托管服务VSTS(Visual Studio Team Services)中。

这个代码为CVE 2018-11235的安全漏洞,当用户在恶意代码储存库中操作时,便有可能遭受任意代码执行攻击。远端代码储存库包含有子模组(Submodule)的定义以及资料,这两者被捆绑在一起做为资料夹,提交到父代码储存库中。当这个代码储存库被递推复制时,Git一开始会将父储存库放到工作目录中,接着准备复制子模组。

但Git随后便会发现,他不需要复制子模组,因为子模组在之前提交到了父储存库,所以也已经被写入到工作目录中,这个子模组早存在于磁盘上。因此Git可以跳过抓取档案的步骤,直接使用磁盘中工作目录里的子模组。

Git自曝可让黑客执行任意代码的漏洞,所有使用者皆受影响!

不过,也并非所有档案都能被复制,当客户端复制了一个代码储存库,其中的重要配置并无法从服务器上取得,这包括.git或是config档案的属性,另外,还有在Git工作流中特定时间点会被执行的脚本程序钩子(Hook),像是Git会在文件写入工作目录时,就会执行Post-checkout钩子。

而设置档之所以不应从远端服务器复制,重要的原因之一便是,远端服务器可能会提供恶意代码,而这些代码是会被Git执行的。

这个CVE 2018-11235漏洞便是犯了这个错误,让Git存在子模组设置漏洞。在子模组储存库被提交到父储存库,且从未实际复制过,子模组储存库中又可能存在已配置的钩子,这时当使用者进行递回复制,精心设计的恶意父储存库会先被写入工作目录,Git接着读取子模组,将这些子模组也写入到工作目录中,而最后一步,便会执行在子模组储存库里任何的Post-checkout钩子。

为了解决这个问题,现在Git客户端会更仔细检查子模组的资料夹名称,包含..现在都为不合法的名称,而且也不能是符号链结,所以这些档案必须实际存在于.git的储存库资料夹中,而不能是在工作目录里。

Edward ThomsonMay提到,,Git、VSTS与多数其他代码托管服务,现在皆会拒绝存在这样子模组配置的储存库,以保护还没更新的Git客户端。Git 2.17.1还有Windows版的2.17.1客户端软件现已释出,微软呼吁开发者尽速更新。

相关文章