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处理子模块路径时的不安全操作,当满足以下条件时可能被利用:

  1. 仓库包含子模块
  2. 子模块路径包含特殊构造的符号链接
  3. 在Windows平台上,Git尝试在受保护目录创建文件

技术分析

漏洞触发流程:

  1. 攻击者创建恶意Git仓库,包含精心构造的子模块配置
  2. 受害者克隆该仓库
  3. Git尝试初始化子模块时,由于路径解析问题导致任意文件写入
  4. 在特定条件下可升级为代码执行

漏洞复现

环境准备

  • 易受攻击的Git版本(<2.45.1)
  • Windows系统(演示权限问题)

复现步骤

  1. 创建恶意仓库结构:
恶意仓库/
├── .gitmodules
└── modules/
    └── x (符号链接指向敏感目录)
  1. .gitmodules文件内容示例:
[submodule "x"]
    path = modules/x
    url = https://example.com/malicious.git
  1. 当受害者执行:
git clone --recurse-submodules <恶意仓库URL>
  1. Git会尝试在C:/Program Files/Git/...等受保护目录创建文件,导致权限错误或潜在的文件覆盖

漏洞修复

官方补丁

升级到Git 2.45.1或更高版本,该版本修复了以下问题:

  • 加强子模块路径验证
  • 防止通过符号链接逃逸预期目录
  • 改进Windows平台权限处理

临时缓解措施

如果无法立即升级:

  1. 避免克隆不可信仓库
  2. 禁用子模块自动初始化:
    git config --global submodule.recurse false
    
  3. 手动审查.gitmodules文件

Windows权限问题解决方案

针对用户提到的权限错误:

fatal: could not create leading directories of 'C:/Program Files/Git/GIT-RCE/A/modules/x': Permission denied

正确设置管理员权限的方法

  1. 通过快捷方式设置

    • 右键Git Bash快捷方式
    • 选择"属性"
    • 切换到"快捷方式"标签
    • 点击"高级"
    • 勾选"以管理员身份运行"
    • 应用更改
  2. 通过任务计划程序(更可靠的方法):

    • 打开"任务计划程序"
    • 创建新任务
    • 在"常规"选项卡中:
      • 命名任务(如"Git Admin")
      • 勾选"使用最高权限运行"
    • 在"操作"选项卡中添加Git Bash路径
    • 保存后可通过此任务启动具有管理员权限的Git
  3. 修改安装目录权限(不推荐):

    icacls "C:\Program Files\Git" /grant Administrators:F
    

    注意:这会降低安全性,仅作为最后手段

文件对比工具建议

文章中提到的文件对比工具可能是以下之一:

  1. Beyond Compare - 强大的专业对比工具
  2. WinMerge - 开源文件对比工具
  3. GitHub Desktop - 内置文件差异可视化
  4. VS Code - 内置Git差异查看器
  5. git diff命令 - 命令行对比,可结合--color-words等选项

最佳实践建议

  1. 始终保持Git客户端更新至最新版本
  2. 对不可信仓库执行克隆时使用--no-recurse-submodules选项
  3. 定期审查项目中的子模块配置
  4. 在CI/CD管道中添加子模块安全检查
  5. 考虑使用Git托管服务的扫描功能检测恶意仓库

参考链接

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 文件内容示例: 当受害者执行: Git会尝试在 C:/Program Files/Git/... 等受保护目录创建文件,导致权限错误或潜在的文件覆盖 漏洞修复 官方补丁 升级到Git 2.45.1或更高版本,该版本修复了以下问题: 加强子模块路径验证 防止通过符号链接逃逸预期目录 改进Windows平台权限处理 临时缓解措施 如果无法立即升级: 避免克隆不可信仓库 禁用子模块自动初始化: 手动审查 .gitmodules 文件 Windows权限问题解决方案 针对用户提到的权限错误: 正确设置管理员权限的方法 通过快捷方式设置 : 右键Git Bash快捷方式 选择"属性" 切换到"快捷方式"标签 点击"高级" 勾选"以管理员身份运行" 应用更改 通过任务计划程序 (更可靠的方法): 打开"任务计划程序" 创建新任务 在"常规"选项卡中: 命名任务(如"Git Admin") 勾选"使用最高权限运行" 在"操作"选项卡中添加Git Bash路径 保存后可通过此任务启动具有管理员权限的Git 修改安装目录权限 (不推荐): 注意:这会降低安全性,仅作为最后手段 文件对比工具建议 文章中提到的文件对比工具可能是以下之一: Beyond Compare - 强大的专业对比工具 WinMerge - 开源文件对比工具 GitHub Desktop - 内置文件差异可视化 VS Code - 内置Git差异查看器 git diff命令 - 命令行对比,可结合 --color-words 等选项 最佳实践建议 始终保持Git客户端更新至最新版本 对不可信仓库执行克隆时使用 --no-recurse-submodules 选项 定期审查项目中的子模块配置 在CI/CD管道中添加子模块安全检查 考虑使用Git托管服务的扫描功能检测恶意仓库 参考链接 Git官方发布说明 奇安信漏洞报告 (替换为实际链接) CVE详细页面