CVE-2026-64655: GitHub CLI: Attestation Verification Bypass via Unescaped Regex Metacharacters in SAN Matching
Summary
A security vulnerability has been identified in GitHub CLI that could allow attestation verification bypass when using gh attestation verify with --signer-repo or --signer-workflow flags. GitHub CLI builds the certificate matcher from these flag values without escaping regex metacharacters, so a repository or workflow name is treated as a regular expression rather than a literal string. GitHub permits characters such as . in organization, repository, and workflow path names, and . is a regex wildcard, so a malicious actor can create a lookalike name that satisfies a matcher intended for a different, trusted signer.
Details
GitHub CLI constructs a regular expression from the --signer-repo and --signer-workflow values and matches it against the signing certificate's SAN (Subject Alternative Name) during Sigstore attestation verification. The user-supplied value is interpolated into the pattern without escaping regex metacharacters, so any metacharacter permitted in a GitHub path is interpreted as regex syntax instead of a literal character.
The most practical case is . , which GitHub allows in org/repo names and is a regex wildcard meaning "any single character." For example, an attacker-controlled repository named:
github/artifact.attestations-workflows
matches a verifier configured for the trusted signer:
github/artifact-attestations-workflows
because the unescaped . in the constructed pattern matches the - in the attacker's name (and any other single character at that position). This affected the --signer-repo and --signer-workflow flags but did not affect the --repo and --owner flags which include an exact string comparison.
In v2.97.0, the GitHub CLI escapes the user-supplied signer values before they are incorporated into the SAN matcher, so they are matched as literal strings.
Impact
The practical impact is limited, exploitation requires the attacker to create a plausible lookalike repository name and produce valid Sigstore attestations from it. This could undermine supply chain verification for CI/CD pipelines or policy gates that use these flags to pin trust to a specific signing workflow.
Remediation and Mitigation
1. Upgrade gh to v2.97.0 or later, which escapes signer values before matching. 2. As a workaround, use --repo or --owner flags instead of --signer-repo or --signer-workflow where applicable. 3. Manually inspect the signing certificate SAN in attestation output to confirm the signing workflow origin.
Other sources
GitHub CLI (gh) is GitHub’s official command line tool. Prior to 2.97.0, gh attestation verify builds the certificate Subject Alternative Name matcher from the --signer-repo and --signer-workflow flag values without escaping regex metacharacters, so a user-supplied repository or workflow name is treated as a regular expression rather than a literal string. Because GitHub permits characters such as . in organization, repository, and workflow path names and . is a regex wildcard, an attacker can register a lookalike name (for example github/artifact.attestations-workflows) that satisfies a matcher intended for a different trusted signer (github/artifact-attestations-workflows), bypassing the intended Sigstore attestation verification. Exploitation requires the attacker to create a plausible lookalike repository and produce valid attestations from it, which could undermine supply chain verification for CI/CD pipelines or policy gates that pin trust to a specific signing workflow. This issue is fixed in version 2.97.0.
— MITRE
GitHub CLI: Attestation Verification Bypass via Unescaped Regex Metacharacters in SAN Matching
— Microsoft
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade to a fixed release to a version that resolves this vulnerability.
Fixed in 2.97.0-1 - Upgrade
Upgrade
go/github.com/cli/cli/v2to a version that resolves this vulnerability.Fixed in 2.97.0 - Upgrade
Upgrade
GitHub CLI (gh)to a version that resolves this vulnerability.Fixed in 2.97.0 - Compensating control
When using gh attestation verify, use the --repo or --owner flags instead of --signer-repo or --signer-workflow where applicable.
- Compensating control
Manually inspect the signing certificate SAN in attestation output to confirm the signing workflow origin.
Event History
Frequently Asked Questions
What is the severity of CVE-2026-64655?
The severity of CVE-2026-64655 is rated at 60.
How do I fix CVE-2026-64655?
To fix CVE-2026-64655, upgrade GitHub CLI (gh) to version 2.97.0 or later.
What does CVE-2026-64655 affect?
CVE-2026-64655 affects GitHub CLI, specifically the attestation verification process.
What is the cause of CVE-2026-64655?
CVE-2026-64655 is caused by unescaped regex metacharacters in the Subject Alternative Name matcher.
What are the potential consequences of CVE-2026-64655?
The potential consequences of CVE-2026-64655 include the ability for an attacker to bypass attestation verification.