CVE-2025-13744 Overview
An Improper Neutralization of Input During Web Page Generation (Cross-Site Scripting) vulnerability has been identified in GitHub Enterprise Server that allows attacker-controlled HTML to be rendered by the Filter component (search) across the platform. This vulnerability could be exploited to exfiltrate sensitive information from authenticated users.
The vulnerability exists in multiple components that render user-supplied entity names, including milestones, issues, pull requests, and similar entities displayed through the vulnerable filter/search functionality. An attacker with permissions to create or modify the names of these entities can inject malicious HTML content that executes in the context of other users' browsers when they interact with the affected search components.
Critical Impact
Attackers with low-level permissions can inject malicious HTML to exfiltrate sensitive information from other GitHub Enterprise Server users through the search/filter functionality, potentially compromising authentication tokens, session data, and confidential repository information.
Affected Products
- GitHub Enterprise Server versions prior to 3.20
- GitHub Enterprise Server versions prior to 3.19.1
- GitHub Enterprise Server versions prior to 3.18.2, 3.17.8, 3.16.11, 3.15.15, and 3.14.20
Discovery Timeline
- 2026-01-06 - CVE-2025-13744 published to NVD
- 2026-01-08 - Last updated in NVD database
Technical Details for CVE-2025-13744
Vulnerability Analysis
This Cross-Site Scripting (XSS) vulnerability (CWE-79) stems from improper neutralization of user input in GitHub Enterprise Server's Filter component. The vulnerability allows attackers to inject and execute arbitrary HTML content within the application context, enabling potential data exfiltration attacks against other users.
The attack requires the threat actor to have permissions within a GitHub Enterprise Server instance to create or modify names of various entities such as milestones, issues, or pull requests. When these entity names containing malicious HTML payloads are rendered through the filter/search components, the injected content executes in victims' browsers without proper sanitization.
This vulnerability is particularly concerning because the filter/search component is used extensively across GitHub Enterprise Server, providing attackers with multiple attack surfaces. Successful exploitation could lead to theft of sensitive information including authentication tokens, session identifiers, personal access tokens, and confidential repository data.
Root Cause
The root cause of this vulnerability lies in insufficient input validation and output encoding within the Filter component's rendering logic. When entity names (milestones, issues, pull requests) are displayed in search results and filter views, the application fails to properly sanitize or escape HTML special characters before rendering them in the DOM. This allows malicious HTML and JavaScript to be injected and executed in the browser context of users viewing the affected components.
Attack Vector
The attack vector is network-based, requiring the attacker to have authenticated access to a GitHub Enterprise Server instance with permissions to create or modify entity names. The attack flow involves:
- The attacker creates or modifies an entity (issue, pull request, milestone) with a specially crafted name containing malicious HTML/JavaScript
- A victim user performs a search or uses the filter functionality that renders the malicious entity name
- The injected HTML/JavaScript executes in the victim's browser session
- Sensitive information is exfiltrated to an attacker-controlled endpoint
The vulnerability requires user interaction (the victim must navigate to or search for content that renders the malicious payload), but the attacker only needs low-privilege access to inject the malicious content.
This is a stored/persistent XSS attack, meaning the payload is saved in the application database and delivered to victims whenever they access the affected search or filter functionality containing the malicious entity.
Detection Methods for CVE-2025-13744
Indicators of Compromise
- Unusual entity names containing HTML tags, script elements, or encoded special characters (e.g., <script>, <img onerror=, javascript:, event handlers)
- Unexpected outbound network requests from user browsers to external domains when viewing search results or filter components
- Audit log entries showing creation or modification of entities with suspicious names containing HTML/JavaScript payloads
- User reports of unexpected behavior or popups when using search functionality
Detection Strategies
- Review audit logs for entity creation/modification events with names containing HTML special characters or encoded payloads
- Implement Content Security Policy (CSP) monitoring to detect inline script execution attempts in the application context
- Deploy web application firewall (WAF) rules to detect and alert on XSS payload patterns in entity name fields
- Monitor for anomalous data exfiltration patterns from client browsers accessing GitHub Enterprise Server
Monitoring Recommendations
- Enable and review GitHub Enterprise Server audit logs for suspicious entity naming patterns
- Configure browser-based security monitoring to detect DOM-based XSS execution
- Implement network monitoring to identify unexpected outbound connections from GitHub Enterprise Server user sessions
- Deploy SentinelOne Singularity platform for endpoint detection of post-exploitation activities that may follow successful XSS attacks
How to Mitigate CVE-2025-13744
Immediate Actions Required
- Upgrade GitHub Enterprise Server to a patched version: 3.19.1, 3.18.2, 3.17.8, 3.16.11, 3.15.15, 3.14.20, or 3.20 or later
- Review audit logs to identify any potentially malicious entity names created before the patch was applied
- Audit user permissions to minimize the number of accounts with entity creation/modification privileges
- Implement Content Security Policy headers as an additional defense layer
Patch Information
GitHub has released security patches addressing this vulnerability across multiple supported version branches. Organizations running GitHub Enterprise Server should upgrade to the appropriate patched version based on their current deployment:
| Current Version Branch | Patched Version |
|---|---|
| 3.19.x | 3.19.1 |
| 3.18.x | 3.18.2 |
| 3.17.x | 3.17.8 |
| 3.16.x | 3.16.11 |
| 3.15.x | 3.15.15 |
| 3.14.x | 3.14.20 |
This vulnerability was reported through the GitHub Bug Bounty program. All organizations running affected versions should prioritize upgrading to receive this security fix.
Workarounds
- Restrict entity creation and modification permissions to trusted users only until patches can be applied
- Implement strict Content Security Policy (CSP) headers to mitigate the impact of XSS attacks by preventing inline script execution
- Deploy a Web Application Firewall (WAF) with XSS detection rules to filter malicious payloads in entity names
- Consider temporarily disabling or restricting access to search/filter functionality if patching is delayed (note: this may significantly impact usability)
# Example nginx CSP header configuration for additional XSS protection
# Add to nginx configuration for GitHub Enterprise Server reverse proxy
add_header Content-Security-Policy "default-src 'self'; script-src 'self'; object-src 'none'; base-uri 'self'; frame-ancestors 'self';" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

