Git 2.39.1 修复了两个关键的远程代码执行漏洞

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-subst gitattribute 的 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。

阅读 48
0 条评论