首页 网络安全 正文
  • 本文约1065字,阅读需5分钟
  • 106
  • 0

GitPython中存在的代码执行漏洞CVE-2024-22190

GitPython是一个用于与Git存储库交互的Python库,用来和Git资料库交互,提供各种级别的操作如Git对象的抽象封装以简化数据的访问。

GitPython是一个强大的Python库,提供Git对象抽象封装以简化数据的访问、提供与Git交互高级接口,轻松在Python脚本中管理版本库。

一、基本情况

GitPython模拟Git命令行接口通过对象模型方式抽象版本库(Repository)、分支(panch)、标签(TagObject)和提交(Commit)等。

GitPython中存在的代码执行漏洞CVE-2024-22190

GitPython可以实现高级git-porcelain 和低级的 git-plumbing,是经常需要自动化Git操作,比如创建分支、提交文件或拉取最新代码的工具。

栋科技漏洞库关注到GitPython中修复一个任意代码执行漏洞,漏洞追踪为CVE-2024-22190,CVSS评分为7.8,漏洞细节及PoC已公开。

二、漏洞分析

CVE-2024-22190是GitPython代码执行漏洞,源于CVE-2023-40590修复不完善,后者是Windows不可信的搜索路径导致的代码执行漏洞。

CVE-2023-40590漏洞回顾:

GitPython作为一个可用于与Git库交互的Python库,当解析一个程序的时候,Python/Windows会寻找当前工作目录,然后才是路径环境。

GitPython默认使用“git”命令,若用户从repo运行GitPython时有“git.exe”或“git”可执行文件,则该程序将被运行,而非用户“PATH”中的程序。

这更多的是关于Python如何与Windows系统交互问题,Linux和任何其他操作系统不受影响,使用GitPython的人通常从仓库CWD运行它。

这就导致了攻击者可以诱骗用户下载带有恶意“git”可执行文件的存储库,若用户从该目录运行/导入GitPython,攻击者就可运行任意命令。

CVE-2024-22190分析

在Windows系统中,如果GitPython使用的是shell来运行git,以及当它运行bash.exe来解释 hooks 的时候,就会使用不受信任的搜索路径,

可能执行在不受信任的搜索路径中找到的程序。

如果在Windows上使用这些功能中的任意一个,就可能会导致从不受信任的存储库中运行恶意git.exe或bash.exe,从而导致任意代码执行。

三、 影响范围

GitPython < 3.1.4

四、 修复建议

目前该漏洞已经修复,受影响用户可升级到GitPython 版本3.1.4。

缓解建议:

1、当使用shell时,将NoDefaultCurrentDirectoryInExePath传递到子进程环境中,因为子进程就是实际执行路径搜索的cmd.exe shell。

2、在使用bash.exe子进程运行hooks的Popen调用期间,在GitPython进程环境中设置NoDefaultCurrentDirectoryInExePath。

五、 参考链接

https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-2mqj-m65w-jghx

https://github.com/gitpython-developers/GitPython/security/advisories/GHSA-wfm5-v35h-vwf4

评论
更换验证码
友情链接