Skip to main content

go-git CVE-2026-71556

| EUVDEUVD-2026-54526 HIGH
Improper Link Resolution Before File Access (CWE-59)
2026-08-07 GitHub_M GHSA-hc8v-wwc9-vgxm
7.1
CVSS 3.1 · Vendor: GitHub_M
Share

Severity by source

Vendor (GitHub_M) PRIMARY
7.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L
vuln.today AI
7.6 HIGH

Adjusted C:N to C:L because the CVE description explicitly includes read-outside-worktree as an impact path alongside writes.

3.1 AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:H/VA:L/SC:N/SI:N/SA:N
SUSE
HIGH
qualitative
Red Hat
7.1 HIGH
qualitative

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
Low

Lifecycle Timeline

4
Patch available
Aug 07, 2026 - 17:17 EUVD
Source Code Evidence Fetched
Aug 07, 2026 - 17:06 vuln.today
Analysis Generated
Aug 07, 2026 - 17:06 vuln.today
CVE Published
Aug 07, 2026 - 16:37 cve.org
HIGH 7.1

DescriptionCVE.org

go-git is an extensible git implementation library written in pure Go. Prior to 5.19.2 and 6.0.0-alpha.5, worktree operations (including checkout, status, and add) resolve symbolic links inside the working tree without confining resolution to the worktree boundary, so a maliciously crafted repository containing a symlink can cause go-git to read from or write to files outside the intended working directory when the repository is cloned and its worktree operations are used. Versions 5.19.2 and 6.0.0-alpha.5.

AnalysisAI

Symlink traversal in go-git's worktree filesystem layer allows a maliciously crafted repository to cause write operations to escape the intended worktree boundary when cloned and operated upon. Affected are all filesystem-backed go-git deployments using v5 prior to 5.19.2 and v6 prior to 6.0.0-alpha.5. An attacker who controls a repository can plant symlinks such that a victim's go-git worktree operations (checkout, add, status) silently overwrite files outside the working directory - including critical Git metadata like .git/config - enabling repository poisoning or arbitrary local file corruption. No public exploit identified at time of analysis and no confirmed active exploitation (not listed in CISA KEV).

Technical ContextAI

CWE-59 (Improper Link Resolution Before File Access / Link Following) describes the root cause: a security wrapper validated path strings without enforcing that filesystem operations could not follow already-present symbolic links into restricted locations. The go-git worktreeFilesystem abstraction used by all filesystem-backed worktrees (CPE: cpe:2.3:a:go-git:go-git:*:*:*:*:*:*:*:*) rejected dangerous string patterns - .git references, parent-directory components (..), control characters - but did not prevent OS-level symlink resolution during file creation or opening. Two distinct attack shapes exist: (1) a symlink at a leading path component (e.g., 's' -> '.git'), causing writes to 's/config' to land in '.git/config'; (2) a symlink at the final path component (e.g., 's' -> '.git/config'), causing O_TRUNC opens to overwrite the symlink target. The fix introduced a clearBlockingSymlinks function that uses Lstat to detect and remove blocking symlinks before materializing entries, and added validNoLeadingSymlink checks to the worktreeFilesystem boundary for both read and write paths. Applications using storage/memory or go-billy/memfs are architecturally exempt because they never perform real filesystem operations.

RemediationAI

Upgrade go-git v5 consumers to v5.19.2 and go-git v6 consumers to v6.0.0-alpha.5; both releases are confirmed fixed and available at https://github.com/go-git/go-git/releases/tag/v5.19.2 and https://github.com/go-git/go-git/releases/tag/v6.0.0-alpha.5 respectively. The underlying fix commits are https://github.com/go-git/go-git/commit/008a78f2dd86f52544ddff8b8e8ddeecdf3f7aab and https://github.com/go-git/go-git/commit/661d1c7f101d34e002a3cfcf8dbea5b7421d07ac. For deployments where upgrading is immediately infeasible, a targeted compensating control is to configure the Storer as storage/memory or use go-billy/memfs for the worktree filesystem, which eliminates the vulnerable real-filesystem code path entirely at the cost of in-memory operation (trade-off: no persistence, higher memory consumption for large repositories). If neither upgrade nor in-memory mode is viable, restricting the application to only clone repositories from fully trusted, internally-controlled sources eliminates the attacker's ability to plant malicious symlinks, though this requires application-layer enforcement rather than library-level protection.

Vendor StatusVendor

SUSE

Severity: Important
Product Status
SUSE Linux Enterprise High Performance Computing 15 SP4 SUSE Linux Enterprise Module for Public Cloud 15 SP4 SUSE Linux Enterprise Server 15 SP4 SUSE Linux Enterprise Server for SAP Applications 15 SP4 SUSE Manager Proxy 4.3 SUSE Manager Retail Branch Server 4.3 SUSE Manager Server 4.3 Fixed
SUSE Linux Enterprise High Performance Computing 15 SP5 SUSE Linux Enterprise Module for Public Cloud 15 SP5 SUSE Linux Enterprise Server 15 SP5 SUSE Linux Enterprise Server for SAP Applications 15 SP5 Fixed
SUSE Linux Enterprise Desktop 15 SP7 Affected
SUSE Linux Enterprise Desktop 15 SP7 Not-Affected
SUSE Linux Enterprise High Performance Computing 12 Affected

Share

CVE-2026-71556 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy