CVE-2026-44309 - gitsign verify accepts signatures over go-git-normalized bytes, enabling trust c
CVE-2026-44309 - gitsign verify accepts signatures over go-git-normalized bytes, enabling trust c
GHSA-7rmh-48mx-2vwc MEDIUM go/github.com/sigstore/gitsign
CVE: CVE-2026-44309
Summary
gitsign verify and gitsign verify-tag re-encode commit/tag objects through go-git's EncodeWithoutSignature before checking the signature, instead of verifying against the raw git object bytes. For malformed objects with duplicate tree headers, git-core and go-git parse different trees: git-core uses the first, go-git uses the second. A signature crafted over the go-git-normalized form (second tree) passes gitsign verify while git-core resolves the commit to a completely different tree. This breaks the invariant that a verified signature, the commit semantics git-core presents to users, and the object hash logged in Rekor all refer to the same content.
Severity
Medium (CVSS 3.1: 5.7)
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:H/A:N
- Attack Vector: Network — a malformed commit can be distributed via any accessible git remote
- Attack Complexity: High — exploitation requires crafting malformed objects that also bypass git server fsck checks (not universally enabled)
- Privileges Required: None — the most impactful form (signature replay) requires no signing key
- User Interaction: Required — a victim must run
gitsign verifyon the malformed commit - Scope: Unchanged — impact is confined to the repository under verification
- Confidentiality Impact: None
- Integrity Impact: High — a verified signature appears to endorse content different from what git-core resolves and presents to users
- Availability Impact: None
Affected Component
internal/commands/verify/verify.go—(o *options).Run(line 75)internal/commands/verify-tag/verify_tag.go—(o *options).Run(line 77)pkg/git/verify.go—ObjectHash(lines 126–158, specifically thecommit()round-trip at 161–176)
CWE
- CWE-347: Improper Verification of Cryptographic Signature
- CWE-295: Improper Certificate Validation (secondary — the mismatch allows a cert to appear to cover content it never covered)
Description
##
📌 来源: GitHub-Advisory | 🆔 CVE-2026-44309 | 📅 2026-05-08