跳到内容

保护Git:解决5个新漏洞

Git发布了几个新版本来解决五个CVE。升级到最新的Git版本对于防范这些漏洞至关重要。

保护Git:解决5个新漏洞
作者

你好,Git用户!

今天,我不是以Windows维护者Git的身份给您写信,而是作为Git最新安全错误修复版本的Git社区协调员。

在不断发展的软件开发环境中,安全性仍然是首要关注的问题,特别是对于Git项目。除了我们的其他业务重点之外,在保护您的工作方面,我们坚定不移。正是基于对安全的坚定承诺,我们提请您注意于2024年5月14日发布的最新Git版本v2.45.1,它解决了五个漏洞,而不是一个。受影响的平台包括Windows、macOS、Linux,甚至*BSD,因此这些修复对每个人都很重要!😊 此版本与Visual Studio和GitHub Desktop协调,后者包含Git的子集。我们还发布了一些深入防御的更新,以解决我们在过去几次错误修复版本中注意到的主题。

升级到最新的Git版本对于防范这些漏洞至关重要。如果无法立即更新,请注意从何处克隆存储库。

注释:此更新中的防御深度保护在克隆启用了的存储库时会导致回归吉特LFS。克隆将失败,并显示错误消息。补救办法是打电话git lfs拉力在新克隆中。

细节

这些修复的主要主题是提高克隆Git存储库的安全性。Git长期以来的立场是,克隆甚至不可信的存储库都应该是一项安全的操作,并且应该可以“清理”存储库中潜在的恶意配置和钩子,在本版本中,这一点有明确的记录。

现在,让我们深入了解细节。

带有子模块的存储库可以利用Git中的一个bug进行构建,这样它就可以被愚弄,不将文件写入子模块的工作树,而是写入一个.git(单位:吉特)/目录。这可以通过将Git与目录和符号链接混淆在一起来实现,后者只在大小写上有所不同,这样Git可以编写其中一个,也可以编写另一个,但不能同时编写这两个。这种混淆可以用来操纵Git编写一个钩子,该钩子将在克隆操作仍在运行时执行,用户没有机会检查正在执行的代码。

克隆特殊构建的本地存储库时执行远程代码(CVE-224-32004,高)

在多用户计算机上,攻击者可以准备一个本地存储库,使其看起来像是缺少对象的部分克隆,这样,当克隆此存储库时,Git将在操作过程中执行任意代码,并具有执行克隆的用户的完全权限。

可以绕过对克隆不可信存储库的保护(CVE-224-32465,高)

在某些情况下,对CVE-224-32004的修复是不够的。例如,当获取.zip文件文件包含Git存储库的完整副本,默认情况下不应将其信任为安全的,例如,可以将钩子配置为在该存储库的上下文中运行。

Git项目做到了建议您通过以下方式获取Git存储库.zip文件包含工作树完整副本的文件和.git(单位:吉特)/目录!

尽管如此,Git项目的立场是,可以通过在本地克隆这样一个不受信任的存储库来“净化”它,正如Git文档作为本版本的一部分所阐明的那样。在这种情况下,Git易受CVE-224-32004中描述的相同操作的影响。

不受信任用户克隆本地存储库允许不受信任的用户随意修改克隆存储库中的对象(CVE-224-32020,低)

当源存储库和目标存储库位于同一磁盘上时,本地克隆最终可能会在目标存储库的对象数据库中创建硬链接文件。如果源存储库由其他用户拥有,这意味着这些新的硬链接文件可能会在任何时候被其他用户重写,这很容易让不熟悉Git实现细节的用户感到惊讶。

克隆包含符号链接的本地源存储库时,Git可能会在对象/目录到与目标存储库位于同一文件系统上的任意文件。这可以用于复杂的攻击,以操纵Git写入Git工作树外部和.git(单位:吉特)/目录。

纵深防御

Git项目中有一个共同的主题在以前的安全错误修复版本中修复的漏洞以及本例:似乎涉及到子模块支持,钩子会将发现的漏洞的严重性升级为高或严重。

因此,这一次,我们添加了更多的更改,不仅修复了现有的安全问题,还试图降低未来可能发现的任何相关漏洞的严重性:

  • Git引入了一些安全改进,以防止远程代码执行(RCE),即攻击者可能在您的计算机上运行有害代码。
  • 这些更新包括在克隆操作期间更好地处理符号链接和目录,以防止Git被诱骗到错误的位置写入文件。
  • Git现在有了一种更安全的运行钩子的方法,钩子是可以在特定Git操作期间自动运行的脚本。这有助于防止在克隆期间运行未经授权的代码。
  • Git模板目录的配置设置可能会影响克隆期间运行的钩子,现在受到了保护,以防止意外或恶意更改。
  • 此外,Git现在将警告指向.git(单位:吉特)/目录,这可能会带来安全风险。想要格外谨慎的用户可以将这些警告设置为错误。

这些更改是Git不断努力加强安全性并确保克隆过程安全,避免潜在漏洞的一部分。

信用

CVE-224-32002CVE-224-32004由发现菲利普·海瑟克并由固定约翰内斯·辛德林。找到Apple产品安全CVE-224-32020CVE-224-32021,它们由帕特里克·斯坦哈特.CVE-224-32465由发现并修复杰夫·金防御深度补丁由约翰内斯·辛德林。深入审查的荣誉归于滨野朱尼奥,菲利普·海塞克,约翰内斯·辛德林、和帕特里克·斯坦哈特.

保持安全,保持更新,让我们继续一起构建令人惊叹的软件。

从GitHub了解更多信息

开放源代码

开放源代码

游戏、Git、新版本等等。
GitHub环球2024

GitHub环球2024

获取我们关于人工智能、DevEx和安全的全球开发者活动十周年的门票。
GitHub Copilot公司

GitHub Copilot公司

不要独自飞行。免费试用30天。
在GitHub工作!

在GitHub工作!

查看我们当前的职位空缺。