Safeguard
Vulnerability Analysis•

CVE-2026-96890: High SSRF in GitHub Enterprise Server Secret Scanning

GitHub Enterprise Server 3.20, 3.21 and 3.22 have an SSRF in secret scanning validity checks (CVSS 8.8). Upgrade to 3.20.9, 3.21.7 or 3.22.2.

Safeguard Security Team
3 min read

CVE-2026-96890 is a high severity (CVSS 8.8) server-side request forgery in GitHub Enterprise Server 3.20, 3.21 and 3.22. A committed GCP credential could point the secret scanning validity check at an internal host. GitHub fixed it in 3.20.9, 3.21.7 and 3.22.2.

What's affected

GitHub's release notes list the fix in Enterprise Server 3.20.9, 3.21.7 and 3.22.2, and the record says the issue affected the 3.20, 3.21 and 3.22 series. The weakness is CWE-918, server-side request forgery. GitHub labels the issue High in the 3.20.9 notes. I read the 3.20.9 notes directly. The 3.21.7 and 3.22.2 fix versions come from the record and its references.

The release notes explain the cause: the secret scanning validator for GCP service account credentials trusted the token endpoint embedded in a committed credential, and sent a request to it without restricting the destination. An attacker could therefore make the appliance send requests to chosen internal hosts, which the description says could be chained to remote code execution.

Exploitation needed an authenticated user with push access to a repository, on an instance with GitHub Advanced Security and secret scanning validity checks enabled. That is a non default configuration, and it was reported through GitHub's bug bounty program.

How to check if you're exposed

On the appliance, check the version.

ghe-version

The version is also shown in the management console. Instances on 3.20.8 or lower, 3.21.6 or lower, and 3.22.1 or lower are in scope.

Then check whether the non default conditions apply: is GitHub Advanced Security licensed, and are secret scanning validity checks turned on? If either is off, the described path is not available, but you should still upgrade.

What to do now

  1. Upgrade to GitHub Enterprise Server 3.20.9, 3.21.7 or 3.22.2 or later, following GitHub's upgrade documentation.
  2. If you cannot upgrade right away, check whether validity checks for secret scanning are enabled and weigh whether you need them.
  3. Review who has push access to repositories on the instance.
  4. Restrict the appliance's outbound network access so it cannot reach internal management services it has no reason to call.
  5. Review outbound request logs from the appliance for unexpected internal destinations.

Why it matters

Validity checks make secret scanning more useful, because they tell you whether a leaked credential still works. They also mean the server makes network calls based on content that a user committed. CWE-918 arises when the server trusts a destination that came from that content. The fix is to restrict where such a call may go.

The path to code execution on the appliance is what lifts the score. Source code hosts hold the keys to a company's software, so a compromise there is serious. The record does not mark exploitation and the CVE is not in CISA's catalog. The narrow configuration lowers the number of affected instances, not the impact on those that match.

Try it yourself

Click through it at your own pace, or open it full screen.

Quick check

Is every GitHub Enterprise Server affected?

Exploitation needed GitHub Advanced Security with secret scanning validity checks enabled, which is a non default configuration.

Which versions fix it?

3.20.9, 3.21.7 and 3.22.2.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.