/

CVE-2026-96890

Severity:

HIGH RISK

(8.8)

SSRF (CWE-918) in GitHub Enterprise Secret Scanning

CVE-2026-96890

Analyzed

Vulnerability type

Category:

Server-Side Request Forgery

CWE:

CWE-918

Impact:

Internal service access and potential remote code execution

Severity:

HIGH RISK

(8.8)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

A server-side request forgery vulnerability in GitHub Enterprise Server's secret scanning validator allowed a repository contributor to make the appliance request attacker-controlled internal endpoints. Under a non-default configuration, this behavior could be chained to reach remote code execution on the appliance.

A server-side request forgery vulnerability in GitHub Enterprise Server's secret scanning validator allowed a repository contributor to make the appliance request attacker-controlled internal endpoints. Under a non-default configuration, this behavior could be chained to reach remote code execution on the appliance.

Affected context

The issue occurs when GitHub Advanced Security and secret scanning validity checks are enabled on a GitHub Enterprise Server instance. A committed GCP service account credential containing an attacker-selected token endpoint could be processed by the validator, which trusted that endpoint without adequately restricting its destination.

The issue occurs when GitHub Advanced Security and secret scanning validity checks are enabled on a GitHub Enterprise Server instance. A committed GCP service account credential containing an attacker-selected token endpoint could be processed by the validator, which trusted that endpoint without adequately restricting its destination.

Exploit preconditions

  • Attack surface: Secret scanning validity checks performed by the appliance - Required access: An authenticated repository contributor with permission to

push commits

  • Deployment condition: GitHub Advanced Security and secret scanning validity

checks must be enabled

  • Trigger point: Validation of a committed GCP service account credential - Why exploitation is possible: The validator uses a token endpoint supplied

within the credential and does not sufficiently constrain outbound

destinations, allowing requests to attacker-controlled or internal hosts

  • Attack surface: Secret scanning validity checks performed by the appliance - Required access: An authenticated repository contributor with permission to

push commits

  • Deployment condition: GitHub Advanced Security and secret scanning validity

checks must be enabled

  • Trigger point: Validation of a committed GCP service account credential - Why exploitation is possible: The validator uses a token endpoint supplied

within the credential and does not sufficiently constrain outbound

destinations, allowing requests to attacker-controlled or internal hosts

Why this happens

The underlying bug is server-side request forgery, mapped to CWE-918. The validator treated a network destination supplied through repository content as trusted and used it for an outbound request without enforcing an allowlist, destination policy, or equivalent network boundary. This insecure trust relationship can expose internal services and, where reachable functionality is vulnerable, support further compromise.

The underlying bug is server-side request forgery, mapped to CWE-918. The validator treated a network destination supplied through repository content as trusted and used it for an outbound request without enforcing an allowlist, destination policy, or equivalent network boundary. This insecure trust relationship can expose internal services and, where reachable functionality is vulnerable, support further compromise.

Potential impact

  • The appliance may send requests to attacker-controlled endpoints.
  • An attacker could access or probe internal network services.
  • Sensitive response data may be exposed through the request workflow.
  • Internal administrative interfaces could be abused.
  • The vulnerability could be chained to achieve remote code execution on the appliance.
  • The appliance may send requests to attacker-controlled endpoints.
  • An attacker could access or probe internal network services.
  • Sensitive response data may be exposed through the request workflow.
  • Internal administrative interfaces could be abused.
  • The vulnerability could be chained to achieve remote code execution on the appliance.

General mitigation guidance

Mitigation generally focuses on treating all endpoint values derived from repository content as untrusted. Secure-by-default patterns include using fixed service endpoints or tightly scoped destination allowlists, rejecting private, loopback, link-local, and otherwise restricted address ranges, validating resolved destinations, and preventing redirects from bypassing those controls. Outbound network access should be minimized through egress policies, and the appliance service should operate with only the privileges required for validation. Configuration should avoid enabling network-backed validation unless its trust boundary and destination policy are explicitly defined.

Mitigation generally focuses on treating all endpoint values derived from repository content as untrusted. Secure-by-default patterns include using fixed service endpoints or tightly scoped destination allowlists, rejecting private, loopback, link-local, and otherwise restricted address ranges, validating resolved destinations, and preventing redirects from bypassing those controls. Outbound network access should be minimized through egress policies, and the appliance service should operate with only the privileges required for validation. Configuration should avoid enabling network-backed validation unless its trust boundary and destination policy are explicitly defined.

How teams detect issues like this

Detection can include static analysis and code review for HTTP clients that consume URLs from repository files, credentials, or other user-controlled input without destination validation. Reviewers should look for missing protections against private address spaces, DNS rebinding, redirects, and alternate IP representations. Runtime monitoring can alert on unexpected outbound connections from the appliance, while network policy can enforce approved egress destinations. Automated security review tools may help flag SSRF-prone request construction.

Detection can include static analysis and code review for HTTP clients that consume URLs from repository files, credentials, or other user-controlled input without destination validation. Reviewers should look for missing protections against private address spaces, DNS rebinding, redirects, and alternate IP representations. Runtime monitoring can alert on unexpected outbound connections from the appliance, while network policy can enforce approved egress destinations. Automated security review tools may help flag SSRF-prone request construction.

Sources

SourceLink
docs.github.comdocs.github.com/en/enterprise-server@3.20/admin/release-notes#3.20.9
docs.github.comdocs.github.com/en/enterprise-server@3.21/admin/release-notes#3.21.7
docs.github.comdocs.github.com/en/enterprise-server@3.22/admin/release-notes#3.22.2

Frequently asked

questions

It can be triggered through repository content by an authenticated contributor,

but exploitation depends on the affected secret scanning validation feature

being enabled and on the appliance being able to reach the selected

destination.

The attacker generally needs an authenticated account with permission to push

to a repository on a GitHub Enterprise Server instance using the relevant

non-default configuration.

Treat credential-embedded endpoints as untrusted, prefer fixed or explicitly

allowlisted destinations, validate resolved addresses, restrict redirects,

and enforce outbound network controls.

Apply SSRF-focused secure coding reviews, use centralized URL validation,

limit appliance egress, monitor unexpected outbound requests, and keep

network-backed validation features disabled unless their trust boundaries are

well controlled.

It can be triggered through repository content by an authenticated contributor,

but exploitation depends on the affected secret scanning validation feature

being enabled and on the appliance being able to reach the selected

destination.

The attacker generally needs an authenticated account with permission to push

to a repository on a GitHub Enterprise Server instance using the relevant

non-default configuration.

Treat credential-embedded endpoints as untrusted, prefer fixed or explicitly

allowlisted destinations, validate resolved addresses, restrict redirects,

and enforce outbound network controls.

Apply SSRF-focused secure coding reviews, use centralized URL validation,

limit appliance egress, monitor unexpected outbound requests, and keep

network-backed validation features disabled unless their trust boundaries are

well controlled.

Find out what's already
exploitable in your codebase.