Git作为当前全球最流行的版本控制系统,广泛应用于开源社区和企业软件开发领域,其安全性至关重要。近日,安全研究人员发现了一个被编号为CVE-2025-48384的重要漏洞,该漏洞涉及Git对配置文件中回车符(Carriage Return,简称CR)处理的逻辑缺陷,可能导致在克隆带子模块的仓库时被远程利用,实现远程代码执行(RCE)。该漏洞不仅影响Git的原生版本,还波及了嵌入式Git功能的第三方软件,包括GitHub Desktop等。深入理解此漏洞的成因与攻击路径,对于提升软件供应链的安全防护能力具有现实意义。Git的配置文件采用类似INI的纯文本格式,常见文件如.gitmodules用于描述子模块信息。不同于Unix系统仅用换行符(Line Feed,LF)标识行尾,Windows及部分协议采用回车加换行(CRLF)组合。
Git在读取配置文件时,通过特殊函数处理回车符,以兼容不同平台的文件格式。该函数的逻辑在于检测到回车字符时,会查看其后是否紧跟换行符,若是则统一转换为换行符并忽略回车,否则保留回车字符。这种处理方式虽然看似合理,却在特定场景下引发漏洞。当配置文件中包含以回车符结尾的字符串值,如.gitmodules中的path字段,Git在写回配置时未始终将包含控制字符的字符串用双引号引起来,导致下一次读取时重新解析该值时,末尾的回车符被漏读,产生路径字符串不一致的情况。具体到子模块路径,攻击者可以构造含有回车符的路径值,经过配置文件的读写循环,Git实际操作的路径将与验证的路径不同。由于Unix类系统支持在文件名中包含控制字符,攻击者得以绕过路径校验,将子模块内容写入任意位置,包括仓库外的目录。
这种路径混淆为恶意行为创造了条件,攻击者可借此写入并执行恶意Git钩子脚本,实现远程代码执行。此外,通过覆盖.git目录下的重要配置文件,也可能造成后续操作的安全隐患。值得注意的是,Windows环境因文件名限制,暂不受该漏洞直接威胁,但macOS平台同样存在风险。漏洞利用的前提是用户通过命令行或Git客户端使用带递归子模块选项的克隆命令(git clone --recursive)从不可信仓库克隆代码。GitHub Desktop默认启用此递归选项,更易使用户暴露于风险之中。作为临时应对措施,用户可先执行不带递归选项的克隆操作,手动检查.gitmodules的内容确认安全后再初始化子模块,降低被利用的概率。
安全团队及开发者应尽快更新至包含修复补丁的Git版本。修复方案本质上在于严格检测配置文件写出时回车符的存在,确保带回车符的字符串均被双引号包围,从而避免读写循环导致的路径解析错误。除此之外,加强对配置文件内容的解析逻辑,避免信任未经过严格验证的输入,是提升整体安全性的关键。CVE-2025-48384并非Git首次因回车符处理而引发安全事件。历史上类似的解析漏洞多次揭示文本格式协议对控制字符处理不足带来的风险。当前,业界逐步反思“宽容接受”原则,倾向采取更为严格和一致的输入校验策略,以减少规避式攻击的发生。
此漏洞的暴露提醒开发者与安全人员关注软件供应链的潜在隐患,采用多层次的安全检测与防护。及时更新软件版本、审查第三方依赖代码及定期安全审计,是防范类似漏洞的重要措施。同时,加强对开源项目安全机制的投入,促进社区协作发掘潜在风险,将为未来软件生态的稳健发展提供坚实保障。总结来看,CVE-2025-48384揭示了Git在跨平台字符处理中的细节缺陷,堪称现代软件安全领域对传统兼容性处理的一次警醒。理解并应用其修复策略,不仅能防止具体攻击发生,更能提升软件产品面对多样化威胁的适应能力。广大开发者应高度重视该漏洞的潜在风险,践行最佳安全实践,保障代码托管与交付流程的安全稳定。
。