Git 版本 2.39 及以下存在多个严重漏洞
Git 版本 2.39 及以下存在两个严重漏洞,分别影响 Git 的提交日志格式化和 .gitattributes 解析功能。这两个漏洞可能导致远程代码执行,用户需立即升级到 Git 2.39.1。
漏洞一:CVE-2022-41903
- 发现者:GitLab 的 Joern Schneeweisz
- 影响范围:
git log命令的--format选项 - 漏洞描述:在处理填充操作符(如
%<(,%<|(,%>(,%>>(, 或%><()时,pretty.c::format_and_pad_commit()函数中存在整数溢出问题。具体表现为size_t被错误地存储为int,并作为偏移量传递给memcpy()调用。 - 触发方式:通过运行
git log --format=...命令并传入恶意格式符,或间接通过使用export-substgitattribute 的git archive命令触发。
漏洞二:CVE-2022-23521
- 发现者:X41 D-Sec 的 Markus Vervier 和 Eric Sesterhenn
- 影响范围:gitattributes 机制
- 漏洞描述:在解析
.gitattributes文件时,若路径模式数量巨大、单个模式的属性数量巨大或声明的属性名称巨大,可能导致多个整数溢出。这些溢出可通过精心构造的.gitattributes文件触发,该文件可能存在于提交历史中。 - 触发条件:
.gitattributes文件必须从索引中解析,因为 Git 在从文件解析 gitattributes 时会将超过 2KB 的行分割。
缓解措施
- 临时解决方案:避免使用受影响的功能。
- 推荐解决方案:升级到 Git 2.39.1。
其他漏洞:CVE-2022-41953
- 影响范围:Windows 系统上的 Git GUI
- 漏洞描述:在 Windows 系统上克隆不受信任的仓库时,由于 Git GUI 使用的 Tcl 语言处理搜索路径的方式,恶意仓库可以在顶层目录中包含
aspell.exe,该文件会在用户未检查前被执行,导致运行不受信任的代码。 - 解决方案:该问题已在 Git 2.39.1 中修复。
GitHub 的行动
GitHub 已采取措施确保其托管的仓库不受影响,并防止这些攻击。同时,GitHub 更新了所有集成 Git 的产品,包括 GitHub Desktop、GitHub Codespaces、GitHub Actions 和 GitHub Enterprise Server。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。