两个可能导致远程代码执行的 Git 漏洞

分布式源代码管理系统 Git 已发布 2.39.1、2.38.3、2.37.5、2.36.4、2.35.6、2.34.6、2.33.6、2.32.5、2.31.6 和 2.30.7 版本的补丁。这些补丁修复了两个漏洞,这两个漏洞可能允许攻击者在使用“git archive”命令并访问不受信任的外部仓库时,在其系统上执行自定义代码。这些漏洞是由提交格式化代码和“.gitattributes”文件解析错误引起的。在处理外部仓库时,这些错误可能导致越界堆内存写入和任意内存读取。

这两个漏洞是在 X41 应开源技术改进基金会 (OSTIF) 的要求对 Git 代码库进行安全审计时发现的。OSTIF 是一个旨在加强开源项目安全性的基金会。除了下文讨论的两个关键问题外,审计还发现了一个严重漏洞、一个中等漏洞和四个良性漏洞。此外,审计还提出了 27 条改进代码库安全性的建议。

  • CVE-2022-41903:在处理填充运算符(例如“%<(”、“%<|(”、“%>(”、“%>>(”和“%><( )”)中的大偏移量值时,提交信息格式化代码中存在整数溢出漏洞。整数溢出发生在 format_and_pad_commit() 函数中,原因是该函数使用了 int 类型来表示 size_t 变量,而 size_t 变量用于在调用 memcpy() 时确定复制块的偏移量大小。

    该漏洞既可通过直接调用并添加特制的格式化参数(例如,运行“git log --format=...”)来暴露,也可通过在攻击者控制的仓库中执行“git archive”命令时间接应用格式化来实现。在后一种情况下,格式化修饰符是通过“.gitattributes”文件中的 export-subst 参数指定的,攻击者可以将该文件放置在其仓库中。利用此漏洞可以读取和写入任意堆内存,从而在操作不受信任的仓库时执行恶意代码。

  • CVE-2022-23521:解析仓库中“.gitattributes”文件的内容时存在整数溢出漏洞。当处理大量文件路径模式或使用单个模式处理大量属性,以及解析过长的属性名称时,都会发生此漏洞。攻击者可以利用此漏洞读取和写入任意堆内存位置,并在使用不受信任的仓库时执行恶意代码。攻击者可以在仓库中放置精心构造的“.gitattributes”文件并确保其被索引。

可以通过以下页面跟踪发行版中软件包更新的发布情况: Debian, UbuntuGentoo、RHEL、SUSE、Arch、FreeBSD 和 NetBSD 等操作系统都存在这个问题。为了降低因未能及时安装更新而遭受攻击的风险,我们建议避免使用不受信任的软件仓库,并使用“git archive”命令。需要注意的是,“git archive”命令可以隐式运行,例如,从 Git 守护进程中运行。要禁用 Git 守护进程中的“git archive”命令,请使用命令“git config --global daemon.uploadArch false”更改 daemon.uploadArch 参数。

此外,产品 Git 中还存在另一个漏洞 (CVE-2022-41953)。 Windows这允许在通过 GIT 克隆不受信任的外部仓库时执行代码。问题在于 Git GUI 存在以下缺陷: Windows 在“检出”操作之后,它会自动运行一些后处理命令,例如执行拼写检查程序来检查拼写,而文件拼写检查的搜索路径也包括克隆的工作树(攻击归根结底就是将拼写检查添加到存储库的工作树中)。

来源: opennet.ru

为具有 DDoS 保护、VPS VDS 服务器的站点购买可靠的主机 🔥 购买具备 DDoS 防护的可靠网站托管服务,包括 VPS 和 VDS 服务器 | ProHoster