Skip to content
KitploitKITPLOIT
工具博客
Log in
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2025-48384 — Git 漏洞 | 克隆操作中的回车符与 RCE | Kitploit
工具/GitHubGitHub/s41r4j/cve-2025-48384
漏洞分析漏洞利用供应链安全论文与研究学习与教育实验室与实践
GitHubs41r4j/cve-2025-48384

CVE-2025-48384

Git 漏洞 | 克隆操作中的回车符与 RCE

查看仓库
140年前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
网站
分享

CVE-2025-48384 概述

CVE-2025-48384 是 Git(广泛使用的分布式版本控制系统)中的一个严重漏洞。它涉及对配置值中回车(CR)字符的不当处理,这可能导致子模块检出期间出现路径遍历问题。该缺陷允许在特定条件下执行任意代码。该漏洞于 2025 年 7 月 8 日公开披露,并于 2025 年 8 月 26 日最后一次修改。它于 2025 年 8 月 25 日被添加到美国网络安全和基础设施安全局(CISA)的已知被利用漏洞(KEV)目录中,表明该漏洞已在野外被积极利用,修复截止日期为 2025 年 9 月 15 日。

漏洞描述

该问题的根源在于 Git 处理配置值的方式:

  • 读取配置值时,Git 会去除末尾的回车和换行(CRLF)字符。
  • 然而,在写入配置条目时,包含末尾 CR 的值未被正确加引号,导致该 CR 在后续读取时丢失。

这种差异可能导致子模块在路径包含末尾 CR 时被检出到错误的位置。如果攻击者设置一个符号链接,将该改动后的路径指向子模块的 hooks 目录——并且该子模块包含一个可执行的 post-checkout 钩子——则该钩子脚本可能在检出后被无意执行,从而导致任意代码执行。

技术细节

该漏洞利用了 Git 配置解析中的解释冲突:

  • 配置处理不匹配:末尾 CR 在读取时被去除,但在写入时若不加引号则无法保留。
  • 子模块检出路径改变:类似 submodule/path<CR> 的子模块路径在 CR 丢失后可能被解释为 submodule/path。
  • 符号链接利用:攻击者可以从改动后的路径创建一个指向 hooks 目录(例如 .git/hooks/post-checkout)的符号链接,从而在 git submodule update 或 git clone --recurse-submodules 等操作期间执行恶意钩子。

其分类如下:

  • CWE-436:解释冲突(数据处理方式的差异)。
  • CWE-59:文件访问前链接解析不当(“链接跟随”),源于符号链接滥用。

攻击向量基于网络(AV:N),复杂度高(AC:H),所需权限低(PR:L),需要用户交互(UI:R),且影响范围发生改变(S:C),对机密性、完整性和可用性造成高度影响(C:H/I:H/A:H)。

受影响版本

该漏洞影响以下已修补版本之前的 Git 版本:

  • v2.43.7 之前的所有版本
  • v2.44.0 至 v2.44.3
  • v2.45.0 至 v2.45.3
  • v2.46.0 至 v2.46.3
  • v2.47.0 至 v2.47.2
  • v2.48.0 至 v2.48.1
  • v2.49.0
  • v2.50.0

它影响各种平台上的 Git,包括 Linux、macOS 和 Windows,但在开发人员环境、CI/CD 流水线(例如 GitHub Actions、GitLab CI)以及任何从不受信任的仓库克隆 Git 子模块的场景中尤为相关。

影响与利用场景

  • 影响:存在远程代码执行(RCE)、数据外泄或系统受损的高风险。在开发人员工作流中,如果克隆了恶意仓库,这可能导致供应链攻击。
  • 利用条件:
    • 具有末尾 CR 的特制子模块路径。
    • 重定向到 hooks 目录的符号链接。
    • 子模块中可执行的钩子(例如 post-checkout)。
    • 用户交互,例如使用 --recurse-submodules 克隆仓库。
  • 现实世界中的利用:由于该漏洞已列入 CISA 的 KEV 目录,联邦机构和关键基础设施必须在 2025 年 9 月 15 日之前完成修复。它很可能正在针对开发人员或开源项目的定向攻击中被利用。公告中未提及公开的概念验证(PoC),但高复杂度表明它需要特定的设置。

CVSS 细节尚未在 NVD 中完全评分(CVSS 4.0 待定),但根据公告中的 CVSS 3.1 指标,它符合严重级别(估计 CVSS 8.8,正如之前更广泛的 CVE 列表中所述)。

缓解措施与建议

  • 修复版本:将 Git 更新到以下版本之一或更高版本:
    • v2.43.7
    • v2.44.4
    • v2.45.4
    • v2.46.4
    • v2.47.3
    • v2.48.2
    • v2.49.1
    • v2.50.1
  • 临时解决方案:
    • 避免从不受信任的仓库递归克隆子模块(--recurse-submodules)。
    • 如果可能,在 Git 配置中禁用或限制符号链接的使用。
    • 在权限受限的环境(例如容器化设置)中使用 Git。
  • 其他建议:对于受 CISA 指令约束的组织,请按照供应商说明应用补丁,如果无法修补则停止使用。定期扫描仓库中的可疑子模块,并监控是否有意外的钩子执行。

致谢与参考

  • 致谢:该公告感谢 ttaylorr 报告并发布了相关细节。
  • 主要参考:
    • NVD 条目:https://nvd.nist.gov/vuln/detail/CVE-2025-48384
    • GitHub 安全公告:https://github.com/git/git/security/advisories/GHSA-vwqx-4fm8-6qc9
    • CISA KEV 目录:(已整合到 NVD 详情中)

该漏洞凸显了版本控制系统中安全处理的重要性,尤其是涉及子模块时。如果您在生产或开发环境中使用 Git,鉴于其已被积极利用的状态,请优先立即更新。

快速 PoC

  • 先决条件:已安装 Docker;本仓库已在本地克隆。PoC 期间无需网络。
  • 易受攻击的 Git:使用 Git 2.40.4(已验证的路径混淆行为)。
  • 子模块 URL:.gitmodules 指向 https://github.com/s41r4j/CVE-2025-48384-submodule.git,但 PoC 会将其重写为本地副本以进行离线测试。

运行:

bash scripts/poc.sh

它的作用:

  • 构建包含 Git 2.40.4 的容器镜像。
  • 在容器内的 $HOME/flag.txt 处创建一个 flag。
  • 将 malicious-submodule-repo/ 复制到容器内的 /tmp。
  • 递归克隆本仓库,并将 URL 重写为指向该本地子模块副本。
  • 强制执行检出,如果路径混淆成功,则触发 post-checkout 钩子。
  • 打印由钩子创建的 /tmp/flag.txt。

说明:

  • 恶意子模块路径是字面量 sub^M(CR),以 gitlink 形式存储;净化后的路径 sub 通过符号链接解析到 .git/hooks,因此子模块所追踪的 post-checkout 会作为实际的钩子落地并运行。
  • 在您将子模块推送到 GitHub 后,若要将 gitlink 重新指向远程子模块的最新提交,请运行:bash scripts/update-gitlink.sh。
下载工具