首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Git爆任意程式码执行漏洞,所有使用者皆受影响!

Git由于在处理子模组储存库的设置档案存在漏洞,导致开发者可能遭受任意程式码执行攻击,多数程式码託管服务皆已预设拒绝有问题的程式码储存库,但使用者最好还是赶快更新,避免曝露在风险中。

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

这个代码为CVE 2018-11235的安全漏洞,当用户在恶意程式码储存库中操作时,便有可能遭受任意程式码执行攻击。远端程式码储存库包含有子模组(Submodule)的定义以及资料,这两者被綑绑在一起做为资料夹,提交到父程式码储存库中。当这个程式码储存库被递迴複製时,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客户端软体现已释出,微软呼吁开发者儘速更新。

如果感觉文章不错,分享让更多的人知道吧!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180531G1I8OA00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券