Git 2.39.1 发布,修复两个安全问题

git
软件资讯 软件资讯 发布于 1年前 69 浏览 0 回复

Git 发布了维护版本 v2.39.1,以及旧版本维护 v2.38.3、v2.37.5、v2.36.4、v2.35.6、v2.34.6、v2.33.6、v2.32.5、v2.31.6 和 v2.30.7 。这些维护版本是为了解决安全问题 CVE-2022-41903 和 CVE-2022-23521。

  • CVE-2022-41903:

git log 能够使用带有 --format 说明符的任意格式显示提交。 这个功能也通过 export-subst gitattribute 暴露给 git archive。

处理填充运算符时(例如,%<(、%<|(、%>(、%>>( 或 %><( ),整数溢出可能发生在 pretty.c::format_and_pad_commit() 中,其中 size_t 不正确地存储为 int,然后作为偏移量添加到后续的 memcpy() 调用中。

这种溢出可以由用户运行调用提交格式化机制(例如,git log --format=...)的命令直接触发。 它也可以通过 export-subst 机制通过 git archive 间接触发,该机制在 git archive 期间扩展存储库文件内部的格式说明符。

这种整数溢出会导致任意堆写入,这可能会导致远程代码执行。

  • CVE-2022-23521:

gitattributes 是一种允许定义路径属性的机制。 这些属性可以通过将 .gitattributes 文件添加到存储库来定义,该文件包含一组文件模式以及应该为匹配该模式的路径设置的属性。

在解析 gitattributes 时,当存在大量路径模式、单个模式的大量属性或声明的属性名称巨大时,可能会发生多个整数溢出。

这些溢出可以通过精心制作的 .gitattributes 文件触发,该文件可能是提交历史的一部分。 当从文件中解析 gitattributes 时,Git 会悄悄地拆分长度超过 2KB 的行,但当从索引中解析它们时则不会。 因此,故障模式取决于文件是否存在于工作树、索引或两者中。

这种整数溢出会导致任意堆读取和写入,这可能会导致远程代码执行。

压缩包下载地址:https://mirrors.edge.kernel.org/pub/software/scm/git/



为您推荐相关文章:

  • Git for Windows v2.40.0 已发布
  • Git for Windows v2.40.0-rc1 发布
  • Git 2.40.0 正式发布
  • Git for Windows 2.39.2 发布
  • Git for Windows 2.40.1 发布
  • 同类文章推荐:

  • FileZilla Server 1.8.2 发布,开源 FTP 服务器
  • gRPC 1.63.0 发布,跨语言 RPC 框架
  • React 18.3.0 发布
  • PHP 获得来自 STF 的 20 万欧元投资
  • Node.js v22 正式发布
  • Ubuntu 24.04 LTS 正式发布