CVE-2026-45022

go-git: Improper parsing of specially crafted objects may lead to inconsistent interpretation compared to upstream Git

State
Published
Severity
7.0 High
Published
May 27, 2026
Updated
May 27, 2026
Reserved
May 8, 2026

Read the record on cve.org

Description

go-git is an extensible git implementation library written in pure Go. Prior to 5.19.0 and 6.0.0-alpha.3, go-git may parse malformed Git objects in a way that differs from upstream Git. When commit or tag objects contain ambiguous or malformed headers, go-git’s decoded representation may expose values differently from how Git itself would interpret or reject the same object. Additionally, go-git’s commit signing and verification logic operates over commit data reconstructed from go-git’s parsed representation rather than the original raw object bytes. As a result, go-git may sign or verify a commit payload that is not byte-for-byte equivalent to the object stored in the repository. This can cause a signature to appear valid for a commit whose displayed or effective metadata differs from the object that was intended to be signed. This vulnerability is fixed in 5.19.0 and 6.0.0-alpha.3.

Scores

CVSSScoreVectorSource
4.07.0 HighCVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:H/SA:NGitHub_M

Weaknesses

  • CWE-180 Incorrect Behavior Order: Validate Before Canonicalize
  • CWE-345 Insufficient Verification of Data Authenticity

Affected Products

ProductVersions
go-gitgo-git
  • < 5.19.0Affected
  • >= 6.0.0-alpha.1, < 6.0.0-alpha.3Affected

References

Every record here comes from the CVE Program’s CVE List. © 1999–2026 The MITRE Corporation. CVE is a registered trademark of The MITRE Corporation. The records are reproduced under the CVE Program terms of use.