Git 中的漏洞允许您覆盖文件或执行您自己的代码

分布式源代码控制系统 Git 2.40.1、2.39.3、2.38.5、2.37.7、2.36.6、2.35.8、2.34.8、2.33.8、2.32.7、2.31.8 和 2.30.9 的纠正版本已发布 .XNUMX,其中消除了 XNUMX 个漏洞。 您可以在 Debian、Ubuntu、RHEL、SUSE/openSUSE、Fedora、Arch、FreeBSD 页面上跟踪发行版中软件包更新的发布情况。 作为防止漏洞的解决方法,建议在使用未经测试的外部补丁时避免运行“git apply --reject”命令,并在运行“git submodule deinit”、“git使用不受信任的存储库时,请使用“config --rename-section”和“git config --remove-section”。

CVE-2023-29007 漏洞允许替换 $GIT_DIR/config 配置文件中的设置,该配置文件可用于通过在 core.pager、core.editor 和 core.sshCommand 指令中指定可执行文件的路径来在系统上执行代码。 该漏洞是由于逻辑错误造成的,在对配置文件中的某个节执行重命名或删除操作时,可能会导致非常长的配置值被视为新节的开始。 在实践中,可以通过指定很长的子模块 URL 来实现利用该漏洞的值替换,这些子模块在初始化时保存到 $GIT_DIR/config 文件中。 当尝试通过“git submodule deinit”删除这些 URL 时,这些 URL 可能会被解释为新设置。

漏洞 CVE-2023-25652 允许在使用“git apply –reject”命令处理专门设计的补丁时覆盖工作树外部的文件内容。 如果您尝试使用“git apply”命令执行恶意补丁,并尝试通过符号链接写入文件,则该操作将被拒绝。 在 Git 2.39.1 中,针对符号链接操作的保护已扩展到阻止创建符号链接并尝试通过它们进行写入的补丁。 该漏洞的本质是Git没有考虑到用户可以运行“git apply –reject”命令将补丁中被拒绝的部分写入带有“.rej”扩展名的文件,而攻击者可以使用此功能可将内容写入任意目录,只要当前访问权限允许即可。

此外,还修复了仅在Windows平台上出现的三个漏洞:CVE-2023-29012(执行“Git CMD”命令时在存储库的工作目录中搜索可执行文件doskey.exe,该漏洞允许您组织在用户系统上执行代码)、CVE-2023 -25815(在 gettext 中处理特殊格式的本地化文件时缓冲区溢出)和 CVE-2023-29011(通过 SOCKS5 工作时可能欺骗 connect.exe 文件)。

来源: opennet.ru

添加评论