Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
CVE-2026-71557-poc — 针对 CVE-2026-71557 的本地 PoC,演示 go-git 文件系统引用存储中的路径遍历漏洞,包含漏洞利用逻辑以及易受攻击版本与已修复版本的对比。 | Kitploit
工具/GitHubGitHub/saku0512/cve-2026-71557-poc
漏洞分析漏洞利用渗透测试供应链安全学习与教育
GitHubsaku0512/cve-2026-71557-poc

CVE-2026-71557-poc

针对 CVE-2026-71557 的本地 PoC,演示 go-git 文件系统引用存储中的路径遍历漏洞,包含漏洞利用逻辑以及易受攻击版本与已修复版本的对比。

查看仓库
51个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

CVE-2026-71557: go-git reference name path traversal PoC

英文版

概述

该仓库是基于 go-git 公开公告 GHSA-qgq7-7hm3-q39j 的 CVE-2026-71557 安全本地 PoC。

修复前的 storage/filesystem 未充分验证 loose reference 名称,并将其用作 .git/<reference-name> 的路径。因此,当传入 refs/heads/../../config 之类的 引用名称时,.. 会被规范化,从而可以覆盖位于原始 reference storage 之外的 .git/config。

此 PoC 会调用真实的 go-git API,仅针对临时目录内创建的虚拟 .git/config。 不会连接外部 Git 服务器、修改现有仓库或执行任意命令。

免责声明

本项目仅用于教育目的以及经授权的道德安全验证。请勿在未经许可的环境中使用。

漏洞详情

  • CVE ID: CVE-2026-71557
  • GitHub Advisory: GHSA-qgq7-7hm3-q39j
  • 类型: Path Traversal (CWE-22)
  • 严重程度: Medium
  • CVSS v3.1: 6.3 (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:N/I:H/A:L)
  • 受影响版本:
    • github.com/go-git/go-git/v5 <= 5.19.1
    • github.com/go-git/go-git/v6 <= 6.0.0-alpha.4
  • 修复版本:
    • v5: 5.19.2
    • v6: 6.0.0-alpha.5
  • 受影响的存储: storage/filesystem 的 dotgit reference storage
  • 不受影响的存储: storage/memory

根本原因

在修复前的 v5.19.1 中,DotGit.SetRef 将引用名称原样作为文件名传递给 setRef。

root@kitploit:~
fileName := r.Name().String()
return d.setRef(fileName, content, old)

filesystem-backed storage 的根目录通常是 .git。引用名称 refs/heads/../../config 在路径规范化后变为 config,因此对引用值的写入会 变成对 .git/config 的写入。如果恶意 Git 服务器通告此类引用名称,并且在 clone/fetch 时经 refspec mapping 后 traversal 仍然保留,则攻击者控制的引用 名称可能到达此代码路径。

修复版在 filesystem storage 的 SetRef、Ref、RemoveRef 等入口处验证引用 名称,并拒绝超出 reference storage 范围的名称。

PoC

环境要求

  • Go 1.25 或更高版本,或启用了 toolchain 自动获取的 Go
  • 首次 module download 所需的网络连接

在易受攻击版本上复现

go.mod 已固定为易受攻击的 v5.19.1。

root@kitploit:~
go run .

预期的主要输出:

root@kitploit:~
[*] go-git version: v5.19.1
[*] crafted reference: refs/heads/../../config
[*] SetReference error: <nil>
[!] VULNERABLE: .git/config was overwritten through the reference name.

PoC 执行以下操作:

  1. 在 OS 临时目录中创建 filesystem-backed Git storage
  2. 向 .git/config 写入安全 marker
  3. 将名为 refs/heads/../../config 的 hash reference 传递给 SetReference
  4. 验证 marker 是否已被引用 hash 替换
  5. 自动删除临时目录

易受攻击版本与修复版本的对比

以下脚本在不修改仓库内 go.mod 的情况下,使用临时 module 依次运行 v5.19.1 和 v5.19.2 的相同 PoC。

root@kitploit:~
./scripts/run-version-matrix.sh

预期的判定结果:

root@kitploit:~
go-git v5.19.1
[!] VULNERABLE: .git/config was overwritten through the reference name.

go-git v5.19.2
[+] FIXED: the crafted reference was rejected and .git/config stayed intact.

如需查看临时文件,请加上 -keep。显示的目录不会被自动删除,请在确认后 手动删除。

root@kitploit:~
go run . -keep

PoC 范围

此 PoC 直接调用公告中所述的 filesystem storage 易受攻击入口,验证路径遍历 导致的 metadata overwrite。未实现恶意 Git protocol server 或 clone/fetch 的 transport 层。

修复措施

v5 用户请更新至 v5.19.2 或更高版本,v6 alpha 用户请更新至 v6.0.0-alpha.5 或更高版本。在无法更新期间,请不要在 filesystem-backed storage 中从不受信任的 Git 服务器执行 clone/fetch。仅使用 storage/memory 的应用程序不受此漏洞影响。

参考资料

  • GHSA-qgq7-7hm3-q39j
  • go-git PR #2247 (v6 fix)
  • go-git PR #2254 (v5 backport)
  • v5 修复提交 f3d0cc1
  • v5 额外安全提交 3b306ef
下载工具