Git CLI(命令行界面)中存在一个高危漏洞,攻击者可利用该漏洞在Linux和macOS系统上实现任意文件写入。目前该漏洞的概念验证(PoC)利用代码已公开。
该漏洞编号为CVE-2025-48384,CVSS严重性评分为8.1分(满分10分)。当用户执行git clone --recursive
命令克隆恶意仓库时,攻击者可借此实现远程代码执行。
**关键要点**
1. CVE-2025-48384(CVSS 8.1分)漏洞允许攻击者在Linux/macOS系统上通过恶意仓库的`git clone --recursive`操作实现任意文件写入
2. 攻击者可注入恶意Git Hook脚本,这些脚本会在`git commit`和`git merge`操作时自动执行
3. 建议升级至已修复版本(v2.43.7、v2.44.4、v2.45.4、v2.46.4、v2.47.3、v2.48.2、v2.49.1、v2.50.1),macOS用户应使用Git CLI而非GitHub Desktop
4. 目前公开的概念验证利用代码已出现,开发环境需立即采取修复措施
漏洞技术细节
据安全研究员Matt Muir和Linux Malware团队披露,CVE-2025-48384漏洞源于Git在处理类UNIX系统上的.gitmodules文件时,对配置值和回车符(\r)字符的基础性解析缺陷。
该漏洞的根本原因是Git在读取和写入包含控制字符的配置值时存在关键性不一致。当攻击者构造一个子模块路径以回车符结尾的恶意.gitmodules文件时,Git的配置解析器会在读取操作时剥离该字符,但在写入操作时却保留该字符。
这种解析不一致性导致子模块内容可被恶意重定向至任意文件系统位置。该漏洞特别影响macOS和Linux平台上未打补丁的Git CLI版本(v2.43.7、v2.44.4、v2.45.4、v2.46.4、v2.47.3、v2.48.2、v2.49.1和v2.50.1之前的版本)。值得注意的是,由于非UNIX系统在控制字符处理上的根本差异,Windows系统不受此漏洞影响。
macOS平台的GitHub Desktop客户端尤其容易受到攻击,因为它在底层默认执行git clone --recursive
操作。DataDog研究人员已发现多种利用该任意文件写入原语实现持久性远程代码执行的攻击路径。
最常见的攻击场景涉及武器化仓库:攻击者发布带有README说明的仓库,诱导用户执行git clone --recursive
命令——这种做法在开源项目中经常被推荐使用。一旦克隆了恶意仓库,攻击者就能将仓库子模块中包含的Git Hook脚本直接写入受害者的.git子目录中。
这些恶意负载会在常规Git操作(如git commit
和git merge
命令)时自动执行,为攻击者提供透明的持久化机制。其他利用技术还包括覆盖受害者的Git配置文件,修改[remote "origin"]部分,从而将知识产权和专有源代码秘密外泄至攻击者控制的服务器。
安全研究人员已验证了可向/tmp目录实现任意写入的概念验证利用代码,相关代码已在互联网公开。
风险因素 | 详情 |
---|---|
受影响产品 | Linux和macOS上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 CLI版本;macOS平台的GitHub Desktop客户端(未打补丁版本) |
影响 | 任意文件写入 |
利用前提 | 可通过公共托管平台访问的仓库或社会工程学攻击 |
CVSS 3.1评分 | 8.1(高危) |
修复建议
企业必须立即通过各自的包管理器将受影响的Git CLI升级至已修复版本(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 --version
命令验证当前Git版本,并与存在漏洞的版本范围(包括v2.50.0、v2.49.0、v2.48.0-v2.48.1、v2.47.0-v2.47.2、v2.46.0-v2.46.3、v2.45.0-v2.45.3、v2.44.0-v2.44.3以及v2.43.6及更早版本)进行比对。
macOS平台的GitHub Desktop用户应暂时避免使用该客户端进行Git操作,转而使用已打补丁的Git CLI进行仓库管理,直至官方发布修复补丁。
安全团队可实施检测机制,使用自定义代理规则监控针对外部仓库的可疑git clone --recursive
操作,同时在克隆不受信任的仓库前审计.gitmodules文件内容。