20250713-一个回车符搞崩Git,甚至能触发远程代码执行?

原文摘要

一个看似无害的回车符(Carriage Return),竟然能让 Git 的子模块克隆逻辑彻底“失控”

原文链接

进一步信息揣测

  • Git子模块漏洞的隐蔽性:回车符(\r)在.gitmodules文件中的异常处理可绕过安全检测,这种非显性攻击向量通常不会被常规代码审查发现,属于底层解析逻辑的盲区。
  • 类Unix系统的特定风险:漏洞仅在类Unix平台(如Linux/macOS)触发,Windows系统因路径处理差异天然免疫,说明跨平台工具的兼容性设计可能引入单点安全缺陷。
  • 递归克隆的致命性git clone --recursive命令会自动处理子模块,而多数开发者 unaware 这会执行潜在恶意代码,企业内网构建系统若未隔离第三方仓库则风险极高。
  • 供应链攻击新路径:攻击者可伪装成合法库提交带恶意子模块的PR,或劫持已被信任的仓库依赖链,这种手法比直接注入恶意代码更隐蔽。
  • IDE/工具的连带风险:GitHub Desktop等GUI工具底层调用Git命令时同样受影响,但用户可能因界面友好而放松警惕,说明封装层会放大底层漏洞的影响面。
  • 漏洞修复的滞后性:尽管CVE编号已分配(CVE-2025-48384),但嵌入式Git版本(如IDE内置、CI工具链)的更新往往延迟数月,形成实际防护空窗期。
  • 企业级缓解策略:内部安全团队应紧急禁止递归克隆不可信仓库,并强制使用git config --global protocol.file.allow never关闭本地文件协议,这些措施未在公开通告中强调。
  • 历史债务的爆发:该漏洞源于Git早期对CR/LF跨平台处理的妥协设计,类似"配置解析不一致性"问题在老旧代码库中普遍存在但极少被系统性审计。