Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to GHES instance
-
DeliveryCraft malicious Markdown payload
-
ExploitStore in issue/PR/repo content
-
InstallVictim renders the page
-
C2CSP bypass via same-origin gadget
-
ExecuteSteal CSRF tokens, act as victim
-
ImpactExfiltrate 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. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – 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
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
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
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.
Primary rating from Vendor (GitHub_P).
CVSS VectorVendor: GitHub_P
Lifecycle Timeline
2DescriptionCVE.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
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.
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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
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.
Supply chain vulnerability in Eclipse Theia GitHub Actions workflow. The preview.yml workflow uses pull_request_target w
Supply chain attack vector in OpenLIT GitHub Actions workflows. The pull_request_target trigger with checkout enables ma
Eigent multi-agent workflow CI pipeline (ci.yml) uses pull_request_target with checkout of untrusted PR code, enabling a
An unsafe reflection vulnerability was identified in GitHub Enterprise Server that could lead to reflection injection. R
cmark-gfm is GitHub's extended version of the C reference implementation of CommonMark. Rated critical severity (CVSS 9.
An improper verification of cryptographic signature vulnerability was identified in GitHub Enterprise Server that allowe
Unauthenticated infrastructure overwrite in Hoppscotch API development ecosystem before 2026.2.0. Attackers can overwrit
A exposure of sensitive information vulnerability exists in Jenkins GitHub Plugin 1.29.1 and earlier in GitHubTokenCrede
OneUptime versions prior to 10.0.19 allow unauthenticated attackers to hijack GitHub App integrations across projects by
PolarLearn versions 0-PRERELEASE-15 and earlier lack proper state parameter validation in OAuth 2.0 authentication, enab
Path traversal in esm.sh CDN prior to version 0.0.0-20260116051925-c62ab83c589e allows unauthenticated remote attackers
actions/artifact is the GitHub ToolKit for developing GitHub Actions. Rated high severity (CVSS 7.5), this vulnerability
EUVD-2026-84873
GHSA-6293-4rx2-2p57
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB