CVE-2025-13744

5.4 MEDIUM

📋 TL;DR

This is a cross-site scripting (XSS) vulnerability in GitHub Enterprise Server's filter/search components that allows attackers with permission to create or modify certain entities (milestones, issues, pull requests) to inject malicious HTML. When exploited, this could lead to sensitive information exfiltration. All GitHub Enterprise Server instances prior to version 3.20 are affected.

💻 Affected Systems

Products:
  • GitHub Enterprise Server
Versions: All versions prior to 3.20
Operating Systems: All supported platforms
Default Config Vulnerable: ⚠️ Yes
Notes: Requires attacker to have permissions to create or modify milestones, issues, pull requests, or similar entities.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Attackers could steal session cookies, authentication tokens, or sensitive data from users who view maliciously crafted search/filter results, potentially leading to account compromise and data breaches.

🟠

Likely Case

Targeted attacks against specific users to steal credentials or session information through crafted milestone/issue names that appear in search results.

🟢

If Mitigated

With proper input validation and output encoding, the malicious HTML would be rendered harmless as plain text.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ✅ No
Weaponized: UNKNOWN
Unauthenticated Exploit: ✅ No
Complexity: LOW

Exploitation requires authenticated access with specific permissions. The vulnerability was discovered through GitHub's bug bounty program.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 3.19.1, 3.18.2, 3.17.8, 3.16.11, 3.15.15, or 3.14.20

Vendor Advisory: https://docs.github.com/en/enterprise-server@3.14/admin/release-notes#3.14.20

Restart Required: Yes

Instructions:

1. Backup your GitHub Enterprise Server instance. 2. Download the appropriate patched version from GitHub Enterprise Server releases. 3. Follow the upgrade instructions for your specific version. 4. Restart the service after upgrade completion.

🔧 Temporary Workarounds

Restrict entity creation/modification permissions

all

Limit who can create or modify milestones, issues, and pull requests to trusted users only.

Implement Content Security Policy (CSP)

all

Add CSP headers to restrict script execution from untrusted sources.

🧯 If You Can't Patch

  • Implement strict input validation and sanitization for all user-controlled fields that appear in search/filter components.
  • Monitor and audit all entity creation/modification activities, especially for suspicious HTML content in names/titles.

🔍 How to Verify

Check if Vulnerable:

Check your GitHub Enterprise Server version via the management console or SSH into the instance and run 'ghe-version'.

Check Version:

ssh admin@your-ghe-instance 'ghe-version'

Verify Fix Applied:

Verify the version is 3.14.20, 3.15.15, 3.16.11, 3.17.8, 3.18.2, 3.19.1, or 3.20+ after patching.

📡 Detection & Monitoring

Log Indicators:

  • Unusual HTML/JavaScript content in milestone, issue, or pull request names
  • Multiple failed attempts to inject script tags in entity names

Network Indicators:

  • Unexpected outbound connections from user browsers to external domains after viewing search results

SIEM Query:

source="github-enterprise" AND (message:"<script>" OR message:"javascript:" OR message:"onerror=" OR message:"onload=")

🔗 References

📤 Share & Export