Safeguard
Vulnerability Analysis•

CVE-2026-77987: Critical SSRF to RCE in GitHub Enterprise Server

CVE-2026-77987 is a critical SSRF in the GitHub Enterprise Server notebook viewer that can lead to RCE. Upgrade to the fixed patch for your release line.

Safeguard Security Team
3 min read

CVE-2026-77987 is a critical (CVSS 9.8) server-side request forgery in the GitHub Enterprise Server notebook viewer that can end in remote code execution. It is fixed in 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15 and 3.17.21. Upgrade to the patch for your release line.

What's affected

  • Product: GitHub Enterprise Server (GHES).
  • Affected: 3.17 through 3.22.
  • Fixed: 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15 and 3.17.21.
  • Weakness: CWE-208, observable timing discrepancy, and CWE-918, server-side request forgery.
  • CVSS 9.8 (critical), vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H. Not listed in CISA KEV.

GitHub says exploitation was unauthenticated when private mode was disabled, and needed any authenticated user when private mode was enabled. It was reported through the GitHub Bug Bounty program.

How to check if you're exposed

On the appliance, check the version from the administrative shell.

ghe-version

You can also read it in the Management Console. Compare it with the fixed versions above. Then check the network exposure of the instance, since the issue needs network access to it.

What to do now

  1. Check your GHES version and pick the fixed patch for your release line.
  2. Take a backup or snapshot, then upgrade using the GitHub upgrade process for your hypervisor.
  3. Turn on private mode if it is off and your policy allows it, since it raises the bar from unauthenticated to authenticated.
  4. Limit network access to the instance to the networks that need it.
  5. After the upgrade, consider rotating instance secrets if you have reason to think the instance was probed, and review audit logs.

Why it matters

The notebook viewer checked the scheme and host of a URL a user supplied, but not the port. That let a request reach other services on the same appliance. Response bodies were not returned, but response timing worked as an oracle. The record says secrets could be extracted character by character, then used against an internal service to get code execution.

It is a good reminder that blind SSRF still matters. Even without a response, timing can leak. Validate the full destination, including the port, and keep internal services on addresses and ports a fetcher can never reach.

Quick check

Do I have to be signed in to exploit it?

Not if private mode is disabled. With private mode on, any authenticated user could.

Is it exploited in the wild?

The record does not mark it as a CISA KEV entry, and the release notes I read do not say so.

Sources

Last reviewed: 19 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.