首页 网络安全 正文

Dulwich远程代码执行漏洞CVE-2026-42305

摘要

栋科技漏洞库关注到 Dulwich 中存在的路径遍历导致远程代码执行漏洞,漏洞现已追踪为CVE-2026-42305,漏洞的CVSS 3.X评分8.8。

Dulwich是一个纯 Python 写的 Git 库,纯 Python、跨平台,不依赖系统 Git 命令,可以直接在 Python 里读写 Git 仓库、处理 Git 协议。

一、基本情况

Dulwich全称Dulwich – Python Git库,是纯Python的 Git 文件格式和协议库,可集成到 Python 工具、自动化脚本、CI/CD、IDE 插件。

Dulwich远程代码执行漏洞CVE-2026-42305

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

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接