CVE-2026-44310 | gitsign --verify panics on empty-certificate PKCS7 and exits 0, bypassing exit-code callers

Gitsign is a keyless Sigstore to signing tool for Git commits with your a GitHub / OIDC identity. From 0.4.0 to before 0.15.0, CertVerifier.Verify() in pkg/git/verifier.go unconditionally dereferences certs[0] after sd.GetCertificates() without checking the slice length. A CMS/PKCS7 signed message with an empty certificate set is a structurally valid DER payload; GetCertificates() returns an empty slice with no error, causing an immediate index-out-of-range panic. On the gitsign --verify code path (the GPG-compatible mode invoked by git verify-commit), the panic is silently recovered by internal/io/streams.go's Wrap() function, which returns nil instead of an error. main.go then exits with code 0, causing exit-code-only verification callers to interpret the failed verification as success. This vulnerability is fixed in 0.15.0.

Published: 2026-05-15 Last update: 2026-05-18 Assigner: [email protected] Source: [email protected]

Conclusion & alert: CVE-2026-44310 is rated Low Risk (24.2/100): CVSS Medium severity, with low exploitation likelihood (EPSS 0.03%). Mandatory action: Monitor for updates and reassess as exploit intelligence or EPSS changes.

Risk is dynamic; we continuously reassess and refresh what is shown on this page as upstream context changes.

Exploit prediction scoring system (EPSS) score for CVE-2026-44310

EPSS lead: Daily EPSS estimates relative likelihood of exploitation; percentile ranks this CVE among scored vulnerabilities (higher = more severe relative rank).

# Date Old EPSS score New EPSS score Delta (New - Old)
1 2026-05-16 0.03%

Full EPSS history (1 record total)

Common vulnerability scoring system (CVSS) metrics for CVE-2026-44310

CVSS metrics for this CVE.

Base score Version Severity Vector Exploitability Impact Score source
5.4 3.1 MEDIUM
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:L/A:L Click to expand
Attack vector (AV:N)
Could be attacked over the internet or any normal routed network—not just someone sitting at the machine.
Attack complexity (AC:L)
Once they can reach the bug, pulling it off is straightforward—no weird race conditions or rare setup.
Privileges required (PR:N)
No account or special rights needed—anonymous or random user is enough.
User interaction (UI:R)
A real person has to do something—click, install, enable—otherwise it doesn’t land.
Scope (S:U)
Damage stays in the same “trust bubble” as the broken component—no big spill into unrelated systems.
Confidentiality (C:N)
Doesn’t really leak secrets in a meaningful way.
Integrity (I:L)
Attackers could change some data, but it’s limited—not everything goes.
Availability (A:L)
Might cause slowdowns, glitches, or partial disruption—not a full brick.
2.8 2.5 [email protected]

Weakness enumeration for CVE-2026-44310

GitHub Security Advisory for CVE-2026-44310

GHSA-7c37-gx6w-8vc5 · Severity: medium · Ecosystem: go — gitsign --verify panics on empty-certificate PKCS7 and exits 0, bypassing exit-code callers

OS Trackers for CVE-2026-44310

vendor priority summary link
debian not yet assigned CVE-2026-44310 not yet assigned priority: Debian including 1 source packages (gitsign), 3 status rows across 3 suites (forky, sid, trixie): resolved 2, open 1. https://security-tracker.debian.org/tracker/CVE-2026-44310
ubuntu medium CVE-2026-44310 medium priority: Ubuntu including 1 source packages (gitsign), 5 status rows across 5 suites (jammy, noble, questing, resolute, upstream): needs-triage 3, DNE 2. https://ubuntu.com/security/CVE-2026-44310

Affected software / configurations for CVE-2026-44310

Vendor Product Version Raw CPE
No affected products in dataset.

References for CVE-2026-44310

cvelogic Threat Intelligence