Git安全漏洞已被公开披露

2025-10-29 10:55:00
Git
原创
29
摘要:2025年7月8日,Git项目发布了新版本,以修复七个影响所有旧版本Git的安全漏洞。

Git中的安全漏洞

CVE-2025-48384

在读取配置值时,Git会自动删除配置值末尾的回车符(CR)和换行符(LF)。然而,在写入配置值时,Git并不会对这些末尾的回车符进行特殊处理,因此这些字符在后续被读取时就会丢失。当初始化一个路径中包含末尾回车符的子模块时,由于这些回车符会被自动删除,导致子模块被错误地检出到错误的路径中。

如果已存在从剥离后的路径到子模块的hooks目录之间的符号链接,攻击者就可以通过子模块的post-checkout钩子来执行任意代码。

CVE-2025-48385

在克隆仓库时,Git可以选择性地下载捆绑包,这样服务器就可以将部分克隆数据传输到内容分发网络中。然而,Git客户端并不会对这些捆绑包进行有效的验证,这就使得远程服务器有可能利用这一漏洞进行协议注入攻击。如果远程服务器发送了经过精心制作的捆绑包,那么它就有可能迫使客户端将这些捆绑包写入任意位置,从而导致类似于之前提到的安全漏洞中的代码执行行为。

CVE-2025-48386(仅适用于 Windows 系统)

在从经过身份验证的远程服务器进行克隆操作时,Git会使用凭证辅助工具来对请求进行身份验证。Git内置了多种凭证辅助工具,其中包括Wincred;该工具会利用Windows凭据管理器来存储用户的凭证信息。

Wincred会使用一个静态缓冲区中的数据作为唯一键,用于存储和检索用户的凭据信息。然而,它并没有对缓冲区中剩余的空间进行有效的边界检查,这就可能导致缓冲区溢出。

Git图形界面和Gitk工具中的安全漏洞

此次更新修复了与 Gitk 和 Git GUI 相关的四个新安全漏洞。这两种工具都是基于 Tcl/Tk 的图形界面,用于与 Git 仓库进行交互。Gitk 的主要功能是显示仓库的历史记录,而 Git GUI 的主要功能则是对现有仓库进行修改。

CVE-2025-27613(Gitk)

当在专门构建的仓库中运行 Gitk 且未使用任何额外的命令行参数时,Gitk 可能会写入或修改某些可写文件。此时必须启用“支持文件编码”选项;不过,即便如此,“显示该行代码的来源”这一功能的功能仍然会受到影响。

CVE-2025-27614(Gitk)

如果用户中招运行了 gitk filename(其中 filename 具有特定的结构),他们就可能执行攻击者提供的任意脚本,从而导致任意代码被执行。

CVE-2025-46334(仅影响 Windows 系统上的 Git GUI)

如果某个恶意仓库中包含了可执行文件,或者常见的textconv程序(例如sh.exe、astextplain或exif),那么在Windows系统中进行路径查找时,这些可执行文件很可能会被找到。如果用户在这样的仓库中使用Git图形界面,并从菜单中选择了“Git Bash”或“浏览文件”,这些程序就可能会被启动,从而导致任意代码的执行。

CVE-2025-46835(Git图形界面相关漏洞)

当用户被诱骗去编辑位于不受信任的代码库中、具有特殊名称的目录中的文件时,Git图形界面可能会创建或覆盖任意可写的文件,这种情况与CVE-2025-27613中的漏洞类似。

升级到最新版本的 Git

防范这些漏洞的最有效方法是升级到 Git 2.50.1——这是最新发布的版本,其中包含了针对上述漏洞的修复补丁。如果您无法立即进行升级,可以通过以下措施来降低风险:
  • 切勿在不可信的仓库中同时使用 git clone 和 --recurse-submodules。
  • 通过将 transfer.bundleURI 配置值设置为 “false”,可以禁用自动获取捆绑包的 URI 功能。
  • 请避免在 Windows 系统上使用 wincred 这种身份验证辅助工具。
  • 切勿在不可信的代码仓库中运行 Gitk 或 Git 的图形化界面工具。

为了保护用户免受与这些漏洞相关的攻击,GitHub已经采取了积极的措施。具体来说,我们已安排发布新的GitHub Desktop版本。GitHub Codespaces和GitHub Actions也会在短期内更新其Git版本。包括Enterprise Server在内的GitHub本身,并未受到这些漏洞的影响。


CVE-2025-48384、CVE-2025-48385 和 CVE-2025-48386 是由 David Leadbeater 发现的。Justin Tobler 和 Patrick Steinhardt 分别为 CVE-2025-48384 和 CVE-2025-48385 提供了修复方案。CVE-2025-48386 的修复工作是由 Taylor Blau 和 Jeff King

共同完成的。CVE-2025-46835 是由 Johannes Sixt 发现并修复的。Mark Levedahl 发现并修复了 CVE-2025-46334。Avi Halachmi 发现了 CVE-2025-27613 和 CVE-2025-27614 两种漏洞,并修复了后者。CVE-2025-27613 的修复工作则由 Johannes Sixt 完成。


原文出处: https://github.blog/open-source/git/git-security-vulnerabilities-announced-6/

发表评论
评论通过审核后显示。