Technical assessment
The primary artifact is a full exploit chain for CVE-2025-7734, a stored XSS vulnerability in GitLab's code navigation feature. The main PoC script (poc.py) automates project creation, payload file commit, LSIF artifact setup, and headless browser verification to trigger and confirm JavaScript execution in the victim's browser session.
Backdoor review
No backdoor observed in reviewed code
The supplied evidence is a collection of documentation, Python scripts, HTML, and Node.js files that demonstrate a stored XSS vulnerability (CVE-2025-7734) in GitLab. All code performs expected exploit-related actions: creating projects, uploading payloads, generating LSIF artifacts, and verifying the vulnerability via API calls, headless browsers, and standalone simulations. No concealed, deceptive, or materially misrepresented behavior that harms the operator or an unrelated system was found.
Model confidence98%
AuthenticationRequired
LanguagesPythonJavaScriptHTMLShell
Target softwareGitLab CE/EE
Attack typesStored Cross-Site Scripting (XSS)Account Takeover
Evidence & reasoningClassification basis · observed behavior · safety review
Technical evidenceClassification basis and observed behavior
Classification basis
The primary artifact, poc.py, is an exploit. It is a Python script that automates the full attack chain to trigger and verify a stored XSS vulnerability. It creates a malicious project, commits a payload, sets up the required LSIF artifact, and uses a headless browser to confirm JavaScript execution (e.g., alert dialog detection). This goes beyond scanning or detection; it actively exercises the vulnerability to achieve code execution in the victim's browser context.
poc.py:1-26poc.py:195-204poc.py:470-481Requirements
- Authenticated GitLab user with Developer role (write access) to create a project and commit files.
poc.py:19-20 - Target GitLab instance running a vulnerable version (14.2.0 through 18.0.5, 18.1.0 through 18.1.3, or 18.2.0 through 18.2.1).
poc.py:20 - A victim user must view the attacker's crafted file in the GitLab blob viewer.
poc.py:15
Observed behavior
- Creates a new GitLab project or uses an existing one via the API.
poc.py:256-279 - Commits a Python source file containing XSS payloads (e.g., <img/src/onerror=...>) as string literals.
poc.py:48-54 - Creates a .gitlab-ci.yml configuration to generate a legacy LSIF artifact (without an end_line property) that triggers the vulnerable code path.
poc.py:57-78 - Verifies the LSIF data endpoint serves the vulnerable-format entries.
poc.py:377-442 - Uses a headless browser (Playwright) to log in, navigate to the blob viewer, and detect XSS execution via alert dialogs and DOM inspection.
poc.py:513-640
Safety-review evidenceBehaviors behind the backdoor verdict
Observables
- Url
- https://exploit-intel.comAuthor attribution URL found in multiple script headers.
poc.py:3 - Url
- http://localhost:8880Target URL for the local Docker-based GitLab lab environment.
CVE-LAB.md:37 - Credential
- root / LabPass2025!Default credentials for the local GitLab lab container.
README.md:63-64 - Command
- docker exec cve-2025-7734-gitlab gitlab-rails runner 'user = User.find_by_username("root"); token = user.personal_access_tokens.create!(...)'Command to create a personal access token on the local target GitLab instance.
poc.py:237-245
Review boundariesWhat the analysis did not establish
- The evidence packet reports complete_artifact_coverage as false, indicating not all files from the repository unit were included. The analysis is based on the 7 selected text files provided.
- The headless browser verification in poc.py requires the Playwright library, which is noted as optional and may not be installed, potentially limiting full exploit chain execution in some environments.
- Binary files (e.g., xss_evidence.png) and other non-text media were not analyzed.
- The review is limited to the static content of the provided files; dynamic behavior or network connections at runtime were not observed.
Model interpretationThis review is limited to the supplied PoC code and context. It does not assert that the code works or is safe to execute.