Skip to main content

GitHub Enterprise Server CVE-2026-75101

| EUVDEUVD-2026-84874 MEDIUM
Authorization Bypass Through User-Controlled Key (CWE-639)
2026-09-22 GitHub_P GHSA-843p-hf47-6r9f
6.0
CVSS 4.0 · Vendor: GitHub_P
View

Attack ChainAIDerived

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

  1. Access
    Authenticate to GHES instance
  2. Delivery
    Learn target repo name and PR number
  3. Exploit
    Create matching repo and pull request
  4. Execution
    Obtain diff/patch access token
  5. Persist
    Replay token against private PR
  6. Impact
    Exfiltrate private pull request diff

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Object-level authorization, IDOR prevention
Exploitation Conditions

Requires a valid authenticated account on the GitHub Enterprise Server instance (PR:L), plus knowledge of the target private repository's name and a valid pull request number within it - the raw diff/patch access token is scoped only to repository name and PR number rather than a globally unique repository identifier, so the attacker forges a repo and PR with matching name/number to mint a usable token. Limiting factors: the attacker must already be an instance user, must be able to create repositories/PRs, and must know or guess the exact target repo name and a valid PR number (the AT:P attack requirement). Impact is confined to reading private PR diffs/patches - no write or availability effect. Affects all GHES versions before 3.22; fixed in 3.17.21, 3.18.15, 3.19.12, 3.20.8, and 3.21.6.

Impact

This is a real but moderate-priority authorization/IDOR issue (CWE-639), consistent with its vendor CVSS 4.0 score of 6.0 (AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N). The confidentiality impact is genuinely high (VC:H) - an attacker retrieves the full raw diff/patch of private pull requests - but several factors constrain real-world severity: exploitation requires an authenticated instance user (PR:L), and the AT:P attack-requirement flag reflects the concrete prerequisite that the attacker must know the target repository's name AND a valid pull request number to forge a matching repo/PR. No EPSS score, KEV listing, or public POC was provided in the input; the flaw was responsibly disclosed via the GitHub Bug Bounty program (reporter GitHub_P), which points to no in-the-wild exploitation. There is no integrity or availability impact (VI:N/VA:N), so this is a pure information-disclosure bug affecting private source code. The one metric worth verifying: the 'Authentication Bypass' tag overstates the issue - this is authorization bypass by an already-authenticated user, not an authentication bypass, and CWE-639 (authorization) confirms that framing.

Exploit ScenarioDerived

An authenticated user on a GitHub Enterprise Server instance who wants a competitor team's private code learns a target private repository's name and a plausible pull request number. They create their own repository and pull request using the same repository name and PR number, obtain the raw-diff/patch access token scoped only to that name+number, and replay it to fetch the private PR's diff. No public exploit code is identified at time of analysis; the flaw was reported through the GitHub Bug Bounty program.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Sep 22, 2026

Authorization bypass in GitHub Enterprise Server allows any authenticated instance user to read the raw diff or patch of pull requests in private repositories they should not be able to access. The flaw (CWE-639) stems from raw diff/patch access tokens being scoped to a repository name and pull request number rather than a globally unique repository identifier, so an attacker who creates their own repository and pull request matching a target's name and number can reuse a token minted for their own repository to retrieve the private pull request contents. Exploitation requires a valid account on the instance, the ability to create repositories and pull requests, and knowledge of the target repository name and a valid PR number, which is why the vendor's CVSS 4.0 rating is 6.0 with AT:P and the impact is limited to confidentiality (no write or availability effect); no public exploit code has been identified at time of analysis and the issue is not in CISA KEV. All GHES versions prior to 3.22 are affected, with fixes in 3.17.21, 3.18.15, 3.19.12, 3.20.8, and 3.21.6.

RemediationAI

Vendor-released patch: upgrade to GitHub Enterprise Server 3.17.21, 3.18.15, 3.19.12, 3.20.8, or 3.21.6 depending on your release series (upgrade paths and release notes at https://docs.github.com/en/enterprise-server@3.21/admin/release-notes#3.21.6 and the equivalent pages for 3.17, 3.18, 3.19, and 3.20); instances on unsupported series below 3.17 will need to move onto a supported line, as no fix is published for them. Until patched, compensating controls should target the attack prerequisites: restrict which users can create repositories and pull requests on the instance (for example via organization repository-creation policies or by limiting access to trusted teams), since the exploit depends on the attacker minting a colliding repo/PR pair - this is low-cost but breaks legitimate developer workflows and should be treated as temporary. Where a repository must remain strictly private, consider temporarily disabling external access to the raw diff/patch endpoints at the reverse proxy or firewall (requests to the pull request .diff/.patch paths) accepting that CI systems and tooling that fetch diffs will break, and restrict instance network exposure to trusted networks/VPN to shrink the attacker pool. Audit instance logs for repository creations whose names match sensitive private repositories and for anomalous fetches of pull request diff or patch endpoints, since such activity may indicate exploitation attempts, and rotate or review any tokens previously issued for raw PR diff/patch access.

Affected VersionsENISA

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

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 vulnerability is an authorization bypass through a user-controlled key (CWE-639 / IDOR class) in the API endpoints that serve raw pull request diffs and patches on GitHub Enterprise Server, covered by the affected CPE cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*. The root cause is that the short-lived access token issued for retrieving a raw PR diff or patch is keyed on the human-readable repository name plus the pull request number, rather than on a globally unique repository identifier (such as the immutable numeric repository ID that GitHub normally uses for authorization decisions). Because repository names are unique only within an instance namespace and are attacker-influenced, an authenticated user can create a repository and a pull request whose name and number collide with a target private repository's name and PR number, obtain a token scoped to that crafted pair, and present it against the private repository's diff/patch endpoint to read content they are not authorized to see. Per the assessed vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:N/A:N (matching the vendor's CVSS 4.0 6.0 with AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N), the attack is network-reachable, requires low-privilege authentication, and requires specific attack prerequisites (AT:P) - namely knowledge of the exact target repository name and a valid pull request number - yielding high confidentiality impact only.

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 6.0 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N
vuln.today AI 6.5 MEDIUM

Authenticated instance user (PR:L) over the network (AV:N); needing repo name and PR number is a modest, guessable prerequisite (AC:L); discloses full private PR contents (C:H) with no integrity or availability impact.

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

Primary rating from Vendor (GitHub_P).

CVSS VectorVendor: GitHub_P

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
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
MEDIUM 6.0

DescriptionCVE.org

An authorization bypass vulnerability was identified in GitHub Enterprise Server that allowed any authenticated user of the instance to read the raw diff or patch of pull requests in private repositories without authorization. Access tokens for raw pull request diffs and patches were scoped to the repository name and pull request number rather than to a globally unique repository identifier, so an attacker who created a repository and pull request matching a target's repository name and pull request number could use a token for their own repository to retrieve the private pull request's contents. Exploitation required the attacker to know the target repository's name and a valid pull request number. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.22 and was fixed in versions 3.17.21, 3.18.15, 3.19.12, 3.20.8, and 3.21.6. This vulnerability was reported via the GitHub Bug Bounty program.

Threat Intelligence Overview

EPSS Score
0.4%
Top 62% exploitable
Prevalence
High
widely deployed enterprise self-hosted source-control platform in large organizations
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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
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· derived
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

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

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