Skip to main content

GitHub Enterprise Server CVE-2026-77912

| EUVDEUVD-2026-84873 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-09-22 GitHub_P GHSA-6293-4rx2-2p57
7.4
CVSS 4.0 · Vendor: GitHub_P
View

Attack ChainAIDerived

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

  1. Recon
    Authenticate to GHES instance
  2. Delivery
    Craft malicious Markdown payload
  3. Exploit
    Store in issue/PR/repo content
  4. Install
    Victim renders the page
  5. C2
    CSP bypass via same-origin gadget
  6. Execute
    Steal CSRF tokens, act as victim
  7. Impact
    Exfiltrate data and propagate to writable repos

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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

Exploitation Conditions

Requires an authenticated account on the target GitHub Enterprise Server instance (PR:L) able to submit Markdown content, and a second victim user who views the rendered malicious content (UI:P/UI:R). Exploitation is not trivial: the attacker must craft a payload that both survives initial HTML sanitization and is transformed by the Markdown pipeline's quote-character rewriting into injectable attributes, then chain same-origin JavaScript gadgets to defeat the Content Security Policy (reflected in AC:H). It affects GHES releases in the 3.17 through 3.22 series; instances patched to 3.22.1/3.21.6/3.20.8/3.19.12/3.18.15/3.17.21 or later are not vulnerable. Impact escalates where the victim has write access, allowing the payload to propagate to their repositories and organizations.

Impact

This is a genuine but moderate-priority stored XSS in GitHub Enterprise Server (GHES). The vendor CVSS 4.0 vector (7.4) is internally consistent with the description: AV:N (web-based), PR:L (authenticated attacker required), UI:P (victim must view the crafted content), AC:H (exploitation depends on chaining same-origin JavaScript gadgets to bypass Content Security Policy - a non-trivial condition, not a simple script injection), and VC:H/VI:H reflecting full DOM control and CSRF-token theft enabling state-changing actions as the victim. SC:L/SI:L capture cross-user/cross-repo propagation. No EPSS score, no CISA KEV listing, and no public POC were provided, so there is no evidence of active exploitation or automated weaponization. The report originates from the GitHub Bug Bounty program (GitHub_P) with fixes already shipped across all supported branches, indicating responsible disclosure rather than in-the-wild abuse. The AC:H (CSP-bypass gadget dependency) plus PR:L and UI:P requirements materially lower real-world exploitability versus a raw unauthenticated XSS. No signals conflict; the main gap is the absence of EPSS/KEV/POC telemetry, which is expected for a freshly-patched bug-bounty finding.

Exploit ScenarioDerived

An authenticated user on a GHES instance crafts Markdown (e.g., in an issue, PR, comment, or README) that survives HTML sanitization but is mutated by the pipeline's quote-character rewriting into injectable HTML attributes. When a colleague or maintainer views the rendered content, same-origin JavaScript gadgets fire, bypass CSP, and take control of the victim's page DOM - reading visible content, stealing embedded CSRF tokens, and performing actions as the victim. No public exploit code was identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.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

Stored cross-site scripting in GitHub Enterprise Server (3.17 through 3.22 series) allows an authenticated user to inject arbitrary HTML attributes through crafted Markdown that survives initial sanitization but is then re-interpreted by the rendering pipeline's quote-character rewriting step, letting the payload chain same-origin JavaScript gadgets to bypass Content Security Policy and seize control of the page DOM in a victim's browser. When a second user views the rendered content, the attacker can read content visible to that victim, extract embedded CSRF tokens, perform state-changing actions as the victim, and exfiltrate data through same-origin writes, with the payload potentially propagating into any repository or organization where the victim holds write access. Exploitation requires an authenticated account and victim interaction (CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N, vendor score 7.4), no public exploit code has been identified at time of analysis, and vendor-released patches exist in 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15, and 3.17.21.

RemediationAI

Vendor-released patch: upgrade affected appliances to GHES 3.22.1, 3.21.6, 3.20.8, 3.19.12, 3.18.15, or 3.17.21 respectively, selecting the fixed release that matches your current upgrade path and confirming the applied build after the upgrade using the release notes linked for each series (for example https://docs.github.com/en/enterprise-server@3.22/admin/release-notes#3.22.1). No vendor-released patch has been identified for the vulnerable builds themselves, so upgrading is the only complete fix; because exploitation requires an authenticated author able to place Markdown content plus a victim who renders it, interim risk reduction should focus on reducing both halves of that pair. Practical compensating controls, each with trade-offs, include restricting repository write, issue, and comment permissions to vetted accounts so untrusted users cannot seed payload Markdown (reduces exposure but slows collaboration), tightening the CSP configuration and auditing same-origin script gadgets so that any attribute injection has fewer permitted scripts to chain into (the vulnerability is specifically designed to bypass CSP via gadgets, so this is hardening rather than a fix and may break legitimate embedded features), and shortening session lifetimes or requiring re-authentication for sensitive state-changing operations so any captured CSRF token has a narrow useful window (adds user friction). Because successful exploitation can propagate the payload into repositories and organizations where the victim has write access, monitoring for anomalous Markdown edits or unexpected commits attributed to users who merely viewed content is also worthwhile, alongside standard auditing of GHES access logs for unusual same-origin write patterns. Rotating credentials and CSRF-linked sessions after suspected exposure limits follow-on abuse.

Affected VersionsENISA

Enterprise Server 3.22.0 <3.22.*
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.*
Enterprise Server 3.20.0 <3.20.*

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-79 (Improper Neutralization of Input During Web Page Generation), realized as an order-of-operations failure in GitHub Enterprise Server's Markdown rendering pipeline rather than a simple missing sanitizer. Markdown submissions are sanitized into HTML, but a subsequent processing pass rewrites quote characters inside that already-sanitized output without re-running sanitization, so characters the sanitizer treated as inert text are converted into syntactically valid attribute delimiters after the trust decision has already been made. This is a mutation/context-shift XSS pattern: the payload is benign at sanitization time and dangerous at render time. Because the injected attributes execute in the same origin as the GHES web application, the attacker does not need to break CSP directly but instead abuses existing same-origin JavaScript gadgets that CSP permits, which is why the vulnerability escalates in scope (S:C) and why CSP alone is not a reliable boundary here. The assessed vector (AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N) reflects that authentication is required to submit content (PR:L), a victim must render it (UI:R), and the attack demands non-trivial payload engineering to survive sanitization and still be transformed into injectable attributes while defeating CSP through gadget chaining (AC:H). Confidentiality and integrity impacts are high, availability impact is none, and the affected component maps to CPE cpe:2.3:a:github:enterprise_server, covering the self-hosted GHES appliance, not GitHub.com.

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 7.4 HIGH
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:P/VC:H/VI:H/VA:N/SC:L/SI:L/SA:N/AU:Y
vuln.today AI 7.7 HIGH

Authenticated content submission (PR:L) and victim view (UI:R); CSP-bypass gadget chaining raises AC:H; browser-context execution crossing to victim's session gives S:C with C:H/I:H, no availability impact.

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

Primary rating from Vendor (GitHub_P).

CVSS VectorVendor: GitHub_P

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

Lifecycle Timeline

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

DescriptionCVE.org

A stored cross-site scripting (XSS) vulnerability was identified in GitHub Enterprise Server that allowed an authenticated attacker to inject arbitrary HTML attributes into rendered Markdown because the Markdown rendering pipeline rewrote quote characters in already-sanitized HTML without re-sanitizing the result. Crafted Markdown could abuse same-origin JavaScript gadgets to bypass Content Security Policy and gain control of the page DOM when viewed by another user. Successful exploitation could allow an attacker to read content visible to the victim, extract embedded CSRF tokens, perform state-changing actions as the victim, and exfiltrate data through same-origin writes. The payload could also propagate to repositories and organizations where the victim had write access. This vulnerability affected supported GitHub Enterprise Server releases in the 3.17, 3.18, 3.19, 3.20, 3.21, and 3.22 series 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 via the GitHub Bug Bounty program.

Executive ViewAI

Why It Matters

GitHub Enterprise Server versions 3.17 through 3.22 are affected by a high-severity stored cross-site scripting issue that requires an authenticated attacker and victim interaction; no public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis. If exploited, an attacker could act as a victim within the GitHub Enterprise environment, access data visible to that user, and potentially propagate unauthorized changes across repositories or organizations where the victim has write access. Leadership should prioritize visibility into exposed instances and enforce least privilege because the issue can undermine trust in code and collaboration workflows.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include restricting access to affected GitHub Enterprise Server instances, enforcing least privilege and MFA, monitoring audit logs for anomalous actions, and temporarily limiting untrusted Markdown rendering where feasible.

Threat Intelligence Overview

EPSS Score
0.4%
Top 61% exploitable
Prevalence
High
self-hosted GitHub used broadly across enterprise engineering 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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Total

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

Cross-Site Request Forgery exploits the automatic credential inclusion behavior of web browsers.

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