首页 网络安全 正文

Dulwich SSH 主机密钥校验缺失CVE-2026-38974

摘要

栋科技漏洞库关注到Dulwich存在的SSH主机密钥校验缺失漏洞,漏洞现在已经被追踪为CVE-2026-38974,漏洞CVSS 3.X评分为5.3。

Dulwich是纯Python编写的Git开发库,无需系统预装Git客户端,就可以代码读写本地、远程Git仓库,完整实现Git底层文件与网络协议。

一、基本情况

Dulwich支持clone、commit、push、分支、标签等全套Git操作,可选 Rust 扩展提速,适合无Git环境、自动化脚本、嵌入式程序使用。

Dulwich 是纯 Python 实现的 Git 协议与仓库操作库,自带高低两层API,对比GitPython、pygit2,优势是零外部依赖、跨平台易打包。

Dulwich SSH 主机密钥校验缺失CVE-2026-38974

Dulwich 在Windows、Linux、macOS、嵌入式 Python 环境全部通用,零外部依赖、跨平台易打包,但是原生纯Python运行速度偏弱。

栋科技漏洞库关注到Dulwich存在的SSH主机密钥校验缺失漏洞,漏洞现在已经被追踪为CVE-2026-38974,漏洞CVSS 3.X评分为5.3。

二、漏洞分析

CVE-2026-38974漏洞是纯 Python Git 库 Dulwich 1.1.0 及以下所有版本中的安全漏洞,该漏洞路径为contrib/paramiko_vendor.py。

由于使用SSH协议拉取/推送Git仓库时代码完全未校验服务端主机密钥,缺少身份核验逻辑,攻击者可实施中间人攻击伪造Git服务端。

具体来说,由于ulwich contrib/paramiko_vendor.py 的 ParamikoSSHVendor.run_command 在建立 SSH 连接前,

未调用 load_system_host_keys 或 load_host_keys 加载任何 known_hosts,

并使用 paramiko.client.MissingHostKeyPolicy() 处理未知主机密钥,导致服务器主机密钥不会与本地已知指纹进行比对;

攻击者在具备网络中间人位置的情况下,可向客户端呈现任意主机密钥并完成 SSH 握手,

从而在用户通过 Dulwich 进行 git fetch、git clone、git push 等 SSH 操作时窃取凭证或篡改 Git 传输内容。

修复版本中通过在 ParamikoSSHVendor.run_command 中新增 _load_host_keys 方法,

先调用 client.load_system_host_keys(),再依据 SSH 配置 globalknownhostsfile 与 userknownhostsfile 加载用户 known_hosts 文件,

随后将客户端策略改为 paramiko.RejectPolicy(),拒绝任何未匹配已知主机密钥的服务器,

从根本上切断主机密钥校验缺失导致的中间人攻击链路。

三、影响范围

Dulwich ≤ 1.1.0

四、修复建议

Dulwich>1.1.0

五、参考链接

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



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