Skip to main content

GitHub Enterprise Server EUVDEUVD-2026-84872

| CVE-2026-77987 CRITICAL
Server-Side Request Forgery (SSRF) (CWE-918)
2026-09-22 GitHub_P GHSA-5p5v-w43x-q8v7
9.3
CVSS 4.0 · Vendor: GitHub_P
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach GHES appliance over network
  2. Delivery
    Submit notebook with crafted internal-port URL
  3. Exploit
    Bypass port validation to hit internal service
  4. Execution
    Extract secret via timing oracle
  5. Persist
    Replay secret to internal service
  6. Impact
    Execute code on appliance

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Requires network access to the GitHub Enterprise Server appliance and use of the notebook viewer feature, which validates a user-supplied URL's scheme and host but not its port - enabling requests to internal services on other ports of the same appliance. Exploitation is unauthenticated when private mode is disabled, but requires any authenticated user when private mode is enabled (a common enterprise hardening setting that limits the unauthenticated attack surface). Full impact depends on the multi-step timing-oracle secret extraction succeeding and a usable internal service being reachable for the follow-on RCE. Affected versions are 3.17 through 3.22; upgrading to 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15, or 3.17.21 removes the condition.

Impact

This is a genuine high-priority vulnerability, not a high-CVSS-but-low-risk case. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H, 9.3) reflects a network-reachable flaw that chains from SSRF to full remote code execution on the appliance - total confidentiality, integrity, and availability impact. I differ on complexity: the exploit relies on a response-timing oracle to extract instance secrets one character at a time, which in practice is a probabilistic, iterative side-channel rather than a single deterministic request, so AC:H is more defensible than the vendor's AC:L. No EPSS score, KEV listing, or public POC is provided, so exploitation status is: no public exploit identified at time of analysis. The flaw was found and reported through the GitHub Bug Bounty program (source GitHub_P) and fixed across all supported branches, which argues for prompt patching despite the absence of active-exploitation signals. Note the PR ambiguity: exploitation is unauthenticated only when private mode is disabled; with private mode enabled (common in enterprise deployments) it requires any authenticated user, so the effective privilege prerequisite depends on instance configuration.

Exploit ScenarioDerived

An attacker with network access to a GitHub Enterprise Server appliance submits a notebook containing a URL that passes scheme and host validation but points to an internal service on an unvalidated port. Because response timing leaks whether guessed characters are correct, the attacker extracts instance secrets character by character, then replays a secret against an internal service to achieve remote code execution on the appliance. No public exploit code is identified; exploitation is unauthenticated when private mode is disabled or requires any authenticated user when private mode is enabled.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
Patch available 0.9% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 22, 2026

Server-side request forgery in the GitHub Enterprise Server notebook viewer allows a remote attacker to direct requests to internal services listening on non-standard ports of the same appliance, because the viewer validated a user-supplied URL's scheme and host but not its port. Response bodies are not returned, but response timing acts as an oracle that can be used to extract instance secrets character by character; an extracted secret can then be used in a separate interaction with an internal service to obtain remote code execution on the appliance. All GitHub Enterprise Server versions 3.17 through 3.22 are affected; exploitation requires network access to the instance and is unauthenticated only when private mode is disabled, otherwise any authenticated user suffices, and no public exploit has been identified at time of analysis. Note that the independent assessment rates this as high difficulty (CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H), since full impact depends on a multi-step timing-oracle extraction succeeding and a usable internal service being reachable for the follow-on RCE.

RemediationAI

Vendor-released patch: upgrade GitHub Enterprise Server to 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15, or 3.17.21 as appropriate for your release line - these are the exact fixed versions and the per-version release notes are linked at https://docs.github.com/en/enterprise-server@3.22/admin/release-notes#3.22.1 (substitute the matching version path for other lines). There is no documented configuration toggle that patches the notebook viewer itself, so upgrading is the only complete fix. Where an immediate upgrade is not possible, the highest-value compensating control is to keep private mode enabled, because the vulnerability is unauthenticated only when private mode is disabled and requires an authenticated account otherwise; the trade-off is that private mode changes instance visibility and may affect unauthenticated workflows. Additionally, restrict network reachability to the appliance (management and web interfaces) to trusted networks or VPN, since exploitation requires network access to the instance; this reduces exposure but does not protect against an insider or an already-authenticated low-privilege user. If the notebook viewer is not required in your environment, disabling or blocking access to that feature removes the exposed request path entirely, at the cost of losing notebook rendering functionality. Monitor appliance logs for anomalous outbound requests to localhost or unexpected internal ports originating from the notebook viewer, and rotate any instance secrets or tokens that may have been exposed, assuming a timing-oracle extraction may have occurred undetected.

Affected VersionsENISA

Enterprise Server 3.21.0 <3.21.*
Enterprise Server 3.17.0 <3.17.*
Enterprise Server 3.20.0 <3.20.*
Enterprise Server 3.18.0 <3.18.*
Enterprise Server 3.22.0 <3.22.*
Enterprise Server 3.19.0 <3.19.*

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-918 (Server-Side Request Forgery): the notebook viewer accepted a user-supplied URL and enforced an allow-list style check on the scheme and host, but omitted the port component of the authority, so requests could be aimed at loopback or same-appliance services bound to other ports. This is a classic blind SSRF variant - response bodies were suppressed, but the observable difference in response timing turned the endpoint into a side-channel oracle, letting an attacker infer secret material byte by byte, a technique far harder to exploit reliably than direct response reflection and consistent with the assessed AC:H rating. The harvested secret then served as a credential for a separate, legitimate-looking interaction with an internal service, escalating from information disclosure to remote code execution on the appliance. The CPE cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* confirms the affected technology is the self-hosted GitHub Enterprise Server appliance, a single-node virtual machine or cluster that runs many internal services locally, which is precisely the environment where port-agnostic SSRF is dangerous. Access control conditions matter: with private mode disabled the vulnerable path is reachable without authentication (PR:N in the vector), while private mode restricts it to any authenticated user.

Know when Github gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (GitHub_P) PRIMARY 9.3 CRITICAL
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 8.1 HIGH

Network-reachable and unauthenticated in default (private mode off), but AC:H because RCE depends on iterative timing-oracle secret extraction plus a second internal interaction.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H
4.0 AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_P).

CVSS VectorVendor: GitHub_P

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

2
Patch available
Sep 22, 2026 - 22:18 EUVD
CVE Published
Sep 22, 2026 - 20:43 cve.org
CRITICAL 9.3

DescriptionCVE.org

A server-side request forgery (SSRF) vulnerability was identified in the notebook viewer of GitHub Enterprise Server. The notebook viewer validated the scheme and host of a user-supplied URL but did not validate the port, allowing requests to be directed to internal services listening on other ports of the same appliance. Response bodies were not returned to the requester, but response timing acted as an oracle that allowed instance secrets to be extracted character by character. An extracted secret could then be used in a separate interaction with an internal service to obtain remote code execution on the appliance. Exploitation required network access to the instance and was unauthenticated when private mode was disabled, or required any authenticated user when private mode was enabled. This vulnerability affected GitHub Enterprise Server versions 3.17 through 3.22 and was fixed in versions 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15, and 3.17.21. This vulnerability was reported through the GitHub Bug Bounty program.

Executive ViewAI

Why It Matters

GitHub Enterprise Server instances running versions 3.17 through 3.22 are exposed to a critical notebook viewer flaw that can let a network-adjacent attacker extract secrets and potentially achieve remote code execution on the appliance, putting source code, CI/CD credentials, and connected internal services at risk. Because no vendor-released patch identified at time of analysis and unauthenticated exploitation is possible when private mode is disabled, security leadership should prioritize immediate exposure reduction, secret rotation, and upgrade planning while monitoring for suspicious internal-port activity.

Business Impact: Severe
Compensating Controls

No vendor-released patch identified at time of analysis; enable private mode to require authentication, restrict network access to GHES, disable or restrict notebook viewer, block requests to internal non-standard ports, rotate secrets, and monitor for SSRF or timing-oracle attempts.

Threat Intelligence Overview

EPSS Score
0.9%
Top 42% exploitable
Prevalence
High
widely deployed self-hosted enterprise DevOps platform in large organizations
Social Media
3
Sightings
Data Quality
7 sources
Confidence: High

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.9%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Very High
Technical Impact
Total

Priority Score

47
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +46
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in Github

View all
CVE-2026-1699 CRITICAL POC
10.0 Jan 30

Supply chain vulnerability in Eclipse Theia GitHub Actions workflow. The preview.yml workflow uses pull_request_target w

CVE-2026-27941 CRITICAL POC
9.9 Feb 26

Supply chain attack vector in OpenLIT GitHub Actions workflows. The pull_request_target trigger with checkout enables ma

CVE-2026-22869 CRITICAL POC
9.8 Jan 13

Eigent multi-agent workflow CI pipeline (ci.yml) uses pull_request_target with checkout of untrusted PR code, enabling a

CVE-2024-0200 CRITICAL POC
9.8 Jan 16

An unsafe reflection vulnerability was identified in GitHub Enterprise Server that could lead to reflection injection. R

CVE-2022-24724 CRITICAL POC
9.8 Mar 03

cmark-gfm is GitHub's extended version of the C reference implementation of CommonMark. Rated critical severity (CVSS 9.

CVE-2024-9487 CRITICAL POC
9.5 Oct 10

An improper verification of cryptographic signature vulnerability was identified in GitHub Enterprise Server that allowe

CVE-2026-28215 CRITICAL POC
9.1 Feb 26

Unauthenticated infrastructure overwrite in Hoppscotch API development ecosystem before 2026.2.0. Attackers can overwrit

CVE-2018-1000600 HIGH POC
8.8 Jun 26

A exposure of sensitive information vulnerability exists in Jenkins GitHub Plugin 1.29.1 and earlier in GitHubTokenCrede

CVE-2026-30920 HIGH POC
8.6 Mar 10

OneUptime versions prior to 10.0.19 allow unauthenticated attackers to hijack GitHub App integrations across projects by

CVE-2026-25221 HIGH POC
8.1 Feb 02

PolarLearn versions 0-PRERELEASE-15 and earlier lack proper state parameter validation in OAuth 2.0 authentication, enab

CVE-2026-23644 HIGH POC
7.5 Jan 18

Path traversal in esm.sh CDN prior to version 0.0.0-20260116051925-c62ab83c589e allows unauthenticated remote attackers

CVE-2024-42471 HIGH POC
7.5 Sep 02

actions/artifact is the GitHub ToolKit for developing GitHub Actions. Rated high severity (CVSS 7.5), this vulnerability

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy