Git作为全球最流行的版本控制系统,广泛应用于软件开发的各个环节,保障着代码的协作与版本同步。然而,在2025年,Git爆出了一个严重的安全漏洞——CVE-2025-48384,该漏洞允许攻击者在非Windows系统如Linux和macOS上,通过恶意构造的仓库实现任意文件写入,潜在导致远程代码执行。此漏洞引起了广泛关注,因为它不仅影响个人开发者,还波及大量企业的CI/CD流水线和代码管理环境。深入了解该漏洞的本质、攻击手法及防护措施,对于提升整个开源生态的安全水平至关重要。漏洞的根源在于Git处理子模块配置文件.gitmodules时对控制字符,特别是回车符(\r)的不一致处理。在使用git clone --recursive命令克隆含子模块的恶意仓库时,攻击者可以利用子模块路径末尾的回车符差异,使得Git在解析配置时去除回车符,而在写出文件时保留,从而将子模块文件错误地写入到攻击者指定的任意路径。
这种行为突破了写入边界,导致Git可以将恶意内容注入到受害者的文件系统中,包括.git目录下的钩子脚本或配置文件。攻击者若写入恶意Git钩子脚本,当受害者执行如git commit或git merge等常用操作时,即可触发钩子执行,从而完成远程代码执行攻击。除此之外,攻击者还能修改Git配置文件,植入恶意远程地址,用以窃取源代码或其他敏感信息,实现隐蔽持久化入侵。该漏洞的严重性由多个安全评分机构评定,获得了高达8.1分的CVSS高危评级,且 public proof-of-concept(PoC)代码已经发布,增加了被利用的风险。更为棘手的是,GitHub Desktop客户端在macOS平台默认执行递归克隆,尚未获得官方完整的安全补丁,导致大量桌面用户处于风险之中。如何判断自身环境是否受影响,是防护的第一步。
用户在Linux或macOS环境下,可以通过运行git --version命令确认所安装的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及以上版本。任何低于这些版本的Git客户端应立即视为高风险设备。此外,暂时尚无针对GitHub Desktop客户端的安全更新,建议macOS用户尽量停止使用该客户端进行git clone操作,改为使用已修补的Git CLI工具。针对该漏洞的防护策略不仅要求及时更新Git版本,还需在操作不受信任的仓库时保持警惕。特别是避免无审查地执行git clone --recursive命令,建议先手动检查.gitmodules文件和子模块配置,确保无异常的控制字符或路径设置。
企业和组织应当在持续集成和部署流水线中,使用包含漏洞检测的工具或规则,实现对相关命令的监控和告警。例如,利用安全监控产品中的定制规则,检测带有--recursive标志的git clone命令,结合进程链信息识别潜在的恶意行为。云安全平台也能帮助连续扫描服务器和容器镜像中的Git版本,及时发现并修补漏洞实例。面对漏洞,快速响应和修复尤为关键。用户应通过包管理器或官方安装包升级Git到安全版本,确保修复了对控制字符处理的不一致问题。同时,审计并清理可能已被篡改的.git目录和钩子脚本。
企业还应加强安全意识培训,提醒开发人员避免盲目信任来源未知的开源仓库。总结来看,Git在非Windows系统中爆出的任意文件写入漏洞,揭示了软件工具在处理配置和控制字符时的潜在风险。攻击者巧妙地利用细节差异,实现了对系统的深度入侵,影响范围广泛。及时升级受影响的软件版本,结合安全监控和使用规范,是防止该漏洞造成实际损害的有效手段。未来,开源社区和安全厂商需加强对版本控制工具的安全审计,确保类似漏洞早发现、早修复,从根本上保障软件供应链的安全与稳定。