Dulwich远程代码执行漏洞CVE-2026-42305
Dulwich是一个纯 Python 写的 Git 库,纯 Python、跨平台,不依赖系统 Git 命令,可以直接在 Python 里读写 Git 仓库、处理 Git 协议。
一、基本情况
Dulwich全称Dulwich – Python Git库,是纯Python的 Git 文件格式和协议库,可集成到 Python 工具、自动化脚本、CI/CD、IDE 插件。

Dulwich用于在Python程序里操作 Git 仓库(clone/commit/push 等),支持本地仓库、远程 SSH/HTTP、标签、分支、合并、打包等。
栋科技漏洞库关注到 Dulwich 中存在的路径遍历导致远程代码执行漏洞,漏洞现已追踪为CVE-2026-42305,漏洞的CVSS 3.X评分8.8。
二、漏洞分析
CVE-2026-4230是 Dulwich 受影响版本中存在的路径遍历导致远程代码执行漏洞,攻击者可利用漏洞将文件写入.git目录或工作目录外。
相关版本中,当用户在Windows上通过Dulwich的CLI、porcelain.clone或基于Dulwich构建的下游工具克隆、获取或检出未信任仓库时,
validate_path_element_ntfs函数允许文件名包含Windows路径结构字节(如反斜杠、冒号、NTFS 8.3短名),
同时core.protectNTFS配置项名称错误导致用户设置被忽略,攻击者可利用漏洞将文件写入.git目录或工作目录外,实现远程代码执行。
具体来说,在 Windows 系统中,使用该工具克隆或检出恶意 Git 仓库时,可触发任意文件写入漏洞,进而实现远程代码执行。
Dulwich 的路径校验逻辑允许目录项文件名中包含 Windows 系统用于路径解析的特殊字符,具体风险点如下:
1、反斜杠 \(Windows 路径分隔符)
名为 .git\hooks\pre-commit.exe 的文件项,在类 POSIX 系统中会被视作单个合法文件名,
但在 Windows 系统中会被解析为多级目录结构 .git/hooks/pre-commit.exe,从而将文件写入受害者的 .git 目录内。
后续使用 Windows 版 Git 执行提交操作时,该钩子程序就会运行,攻击者得以在受害者的用户权限下执行任意代码。
利用 ..\outside.txt 还能实现工作目录越界,向目录外写入文件。
2、冒号 :(NTFS 备用数据流标识符)
形如 .git::$INDEX_ALLOCATION 的名称可直接向受害者的 .git 目录实体写入数据,绕过针对 .git 目录的防护检测。
3、NTFS 8.3 短文件名(git~ 格式)
该程序仅拦截了 git1 这类短名,git2、git10、GIT1 等其他形式的 .git 短别名均未做限制。
此外,配置项相关缺陷进一步加剧了风险:
程序读取 core.protectNTFS 与 core.protectHFS 配置时使用了错误的配置名,导致用户手动设置的参数无法生效;
同时 core.protectNTFS 仅在 Windows 系统中默认开启,而官方 Git 自 CVE-2019-1353 漏洞修复后,已在全平台默认启用该防护。
以上两处配置问题均已修正。
所有在 Windows 环境下,通过 Dulwich 命令行、porcelain.clone 接口,
或是基于 Dulwich 开发的下游工具,执行克隆、拉取、检出非可信仓库操作的用户,均会受到此漏洞影响。
类 POSIX 系统本身无法直接利用该漏洞(在这类系统中,反斜杠仅作为普通文件名字符),
但类 POSIX 系统用户若拉取恶意仓库并推送、转发至其他环境,会间接将恶意目录结构传播给 Windows 端使用者。
(一)修复方案
该漏洞已在 Dulwich 1.2.5 版本中完成修复,建议用户升级至 1.2.5 及以上版本。
本次修复包含三项代码提交:
1、按照官方规范名称读取 core.protectNTFS、core.protectHFS 配置,保证用户自定义配置正常生效;
2、全平台默认开启 core.protectNTFS 防护,与官方 Git 的 PROTECT_NTFS_DEFAULT=1 规则保持一致;
3、在 NTFS 路径校验函数 validate_path_element_ntfs 中,禁止文件名包含反斜杠、冒号,同时拦截所有 git~ 格式的 8.3 短文件名。
(二)临时缓解措施
漏洞修复前暂无有效规避手段。受影响版本会忽略 core.protectNTFS 配置,即便手动开启该选项也无法抵御攻击。
无法升级的用户,请勿在 Windows 系统中使用 Dulwich 克隆、拉取或检出来源不可信的 Git 仓库。
完成升级后,NTFS 路径防护会在全平台默认启用,无需额外配置。
(三)参考资料
1、Git 官方路径校验逻辑:https://github.com/git/git/blob/master/path.c(对应函数:is_ntfs_dotgit、verify_path)
2、CVE-2019-1353:Git 官方漏洞,该漏洞促使 core.protectNTFS 被设为全平台默认开启项
3、CVE-2019-1354:Git 中因目录项包含反斜杠引发的同类路径漏洞
三、影响范围
Dulwich ≥ 0.10.0,<1.2.5
四、修复建议
Dulwic ≥ 1.2.5
五、参考链接
管理员已设置登录后刷新可查看