IPBUF安全漏洞报告
English
CVE-2026-33762 CVSS 2.8 低危

CVE-2026-33762 go-git越界读取导致拒绝服务漏洞

披露日期: 2026-03-31

漏洞信息

漏洞编号
CVE-2026-33762
漏洞类型
拒绝服务
CVSS评分
2.8 低危
攻击向量
本地 (AV:L)
认证要求
低权限 (PR:L)
用户交互
需要交互 (UI:R)
影响产品
go-git

相关标签

拒绝服务go-git越界读取CVE-2026-33762

漏洞概述

go-git是纯Go编写的Git实现库。在5.17.1版本前,其索引解码器处理版本4格式时,未验证路径名前缀长度。攻击者通过构造恶意索引文件,触发越界切片操作导致运行时panic,造成拒绝服务。该漏洞仅影响Git索引格式版本4。

技术细节

该漏洞核心在于go-git库解析Git索引文件版本4时的逻辑缺陷。解码器在读取路径名前缀长度后,未校验该长度是否在已解码路径名字节数组的合法范围内,直接用于切片操作。攻击者可构造包含非法前缀长度的特制index文件。当程序解析此文件时,越界访问会触发Go语言运行时的panic,强制终止程序。尽管需要本地访问和用户交互(如克隆仓库),但成功利用会导致应用崩溃,影响可用性。

攻击链分析

STEP 1
构造恶意文件
攻击者创建一个包含恶意Git索引文件(版本4)的仓库,该文件中包含非法的路径名前缀长度。
STEP 2
诱导用户交互
攻击者诱导受害者使用易受攻击版本的go-git应用去克隆或打开该恶意仓库。
STEP 3
解析触发漏洞
受害者的应用在解析索引文件时,解码器执行越界切片操作。
STEP 4
导致拒绝服务
触发Go运行时panic,导致应用程序崩溃或停止响应。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
package main import ( "fmt" "os" "github.com/go-git/go-git/v5" ) // PoC for CVE-2026-33762 // This code attempts to open a repository containing a crafted Git index file (version 4). // In vulnerable versions (< 5.17.1), parsing the malicious index triggers an out-of-bounds panic. func main() { // Replace with the path to a repository containing the crafted .git/index repoPath := "./crafted_repo" fmt.Printf("Attempting to open repository at: %s\n", repoPath) // PlainOpen triggers the index decoding logic _, err := git.PlainOpen(repoPath) if err != nil { fmt.Printf("Error: %v\n", err) os.Exit(1) } fmt.Println("Repository opened successfully. The library may be patched.") }

影响范围

go-git < 5.17.1

防御指南

临时缓解措施
避免在不受信任的环境中使用易受攻击版本的go-git处理来源不明的Git仓库,或在沙箱环境中运行相关操作以限制崩溃影响。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表