CVE-2024-32002 Git 远程代码执行漏洞分析
字数 1272 2025-08-19 12:41:52
CVE-2024-32002 Git远程代码执行漏洞分析与防护指南
漏洞概述
CVE-2024-32002是Git版本控制系统中的一个高危漏洞,允许攻击者在特定条件下通过恶意仓库实现远程代码执行(RCE)。该漏洞影响Git客户端,当克隆包含子模块的恶意仓库时可能触发。
漏洞细节
受影响版本
- Git版本早于2.45.1
- 特别影响Windows平台,但其他平台也可能受影响
漏洞原理
漏洞源于Git处理子模块路径时的不安全操作,当满足以下条件时可能被利用:
- 仓库包含子模块
- 子模块路径包含特殊构造的符号链接
- 在Windows平台上,Git尝试在受保护目录创建文件
技术分析
漏洞触发流程:
- 攻击者创建恶意Git仓库,包含精心构造的子模块配置
- 受害者克隆该仓库
- Git尝试初始化子模块时,由于路径解析问题导致任意文件写入
- 在特定条件下可升级为代码执行
漏洞复现
环境准备
- 易受攻击的Git版本(<2.45.1)
- Windows系统(演示权限问题)
复现步骤
- 创建恶意仓库结构:
恶意仓库/
├── .gitmodules
└── modules/
└── x (符号链接指向敏感目录)
.gitmodules文件内容示例:
[submodule "x"]
path = modules/x
url = https://example.com/malicious.git
- 当受害者执行:
git clone --recurse-submodules <恶意仓库URL>
- Git会尝试在
C:/Program Files/Git/...等受保护目录创建文件,导致权限错误或潜在的文件覆盖
漏洞修复
官方补丁
升级到Git 2.45.1或更高版本,该版本修复了以下问题:
- 加强子模块路径验证
- 防止通过符号链接逃逸预期目录
- 改进Windows平台权限处理
临时缓解措施
如果无法立即升级:
- 避免克隆不可信仓库
- 禁用子模块自动初始化:
git config --global submodule.recurse false - 手动审查
.gitmodules文件
Windows权限问题解决方案
针对用户提到的权限错误:
fatal: could not create leading directories of 'C:/Program Files/Git/GIT-RCE/A/modules/x': Permission denied
正确设置管理员权限的方法
-
通过快捷方式设置:
- 右键Git Bash快捷方式
- 选择"属性"
- 切换到"快捷方式"标签
- 点击"高级"
- 勾选"以管理员身份运行"
- 应用更改
-
通过任务计划程序(更可靠的方法):
- 打开"任务计划程序"
- 创建新任务
- 在"常规"选项卡中:
- 命名任务(如"Git Admin")
- 勾选"使用最高权限运行"
- 在"操作"选项卡中添加Git Bash路径
- 保存后可通过此任务启动具有管理员权限的Git
-
修改安装目录权限(不推荐):
icacls "C:\Program Files\Git" /grant Administrators:F注意:这会降低安全性,仅作为最后手段
文件对比工具建议
文章中提到的文件对比工具可能是以下之一:
- Beyond Compare - 强大的专业对比工具
- WinMerge - 开源文件对比工具
- GitHub Desktop - 内置文件差异可视化
- VS Code - 内置Git差异查看器
- git diff命令 - 命令行对比,可结合
--color-words等选项
最佳实践建议
- 始终保持Git客户端更新至最新版本
- 对不可信仓库执行克隆时使用
--no-recurse-submodules选项 - 定期审查项目中的子模块配置
- 在CI/CD管道中添加子模块安全检查
- 考虑使用Git托管服务的扫描功能检测恶意仓库