GitLab — Critical GraphQL Flaw Exposes Public Projects to Unauthenticated Modification and Deletion (CVE-2026-19478)
Publication date: August 17, 2026
Category: Vulnerability / DevOps
Introduction
GitLab has issued an out-of-band emergency security update outside its regular bi-weekly release schedule to address a critical vulnerability impacting its Community Edition (CE) and Enterprise Edition (EE) software. Tracked as CVE-2026-19478, the flaw under specific conditions enables an unauthenticated attacker to remotely modify or delete public projects and user data by leveraging a GraphQL directive. The severity of the issue forced the vendor to rapidly deliver patches for self-managed instances while simultaneously mitigating a second high-severity cross-site request forgery (CSRF) vulnerability.
What is CVE-2026-19478 and CVE-2026-19650? (General Analysis)
These vulnerabilities target the GraphQL API subsystem utilized within GitLab for developer workflows and data interaction.
- CVE-2026-19478: This vulnerability represents a critical access control and input validation flaw within GraphQL directives. It allows unauthenticated users to interact destructively with publicly exposed resources. According to official NVD metrics, it carries a base CVSS v3.1 score of 9.4 (CRITICAL) with the official vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:Hand classification CWE-94 (Improper Control of Generation of Code). This confirms that the engine incorrectly interprets maliciously crafted network requests without requiring any victim interaction. - CVE-2026-19650: This secondary issue involves a cross-site request forgery (CSRF) weakness inside the GraphQL multiplex query handler. It carries a base CVSS v3.1 score of 7.1 (HIGH), with the official vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:Land classification CWE-352. Unlike the primary flaw, this vector requires user interaction via GET requests due to improper request validation during multi-query processing.
How Does It Work? (Technical Analysis)
The exploitation mechanics rely on the flexibility inherent in GraphQL query processing and backend endpoint validation within GitLab:
- Exploit Entry Flow (CVE-2026-19478): An external attacker sends structured HTTP requests directly to the GitLab GraphQL API endpoint without providing any session token or user credentials. By exploiting a specific improperly validated directive in vulnerable versions, the API parser executes operations that bypass standard anonymous permission boundaries, allowing mutation calls intended for altering or purging public project assets.
- GET Request Exploitation Flow (CVE-2026-19650): The multiplex query handler processes batches of combined queries. Due to loose request restrictions on HTTP GET requests for certain mutations, an attacker can manipulate authenticated users via web interactions (such as crafted links or embedded scripts) to execute unauthorized state-changing actions on behalf of the victim.
- Persistence and Evasion: Because these vulnerabilities reside at the web application and API logic layers, they do not rely on installing persistent malware on the underlying host operating system; instead, they abuse the business logic exposed by the GitLab server.
Affected Systems / Environments
The impact is restricted exclusively to self-managed deployments of GitLab CE and EE, as cloud-hosted environments (GitLab.com and GitLab Dedicated) were automatically patched prior to public disclosure.
| CVE | Category (CWE) | Impact | CVSS | Vector (Summary) |
|---|---|---|---|---|
| CVE-2026-19478 | CWE-94 | Critical (Modification/Deletion) | 9.4 | AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H |
| CVE-2026-19650 | CWE-352 | High (Mutations via GET / CSRF) | 7.1 | AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L |
Affected Versions:
- All GitLab CE/EE versions from 18.2 before
18.11.11. - Versions from 19.0 before
19.0.8. - Versions from 19.1 before
19.1.6. - Versions from 19.2 before
19.2.4. - Note: Intermediate branches from 18.3 through 18.10 fall within the vulnerable range unless updated to the specified patch levels.
Mitigation and Detection
Remediation
Administrators of self-managed GitLab instances must apply the official security patches immediately. According to the vendor, these updates require no new database migrations and are not expected to cause downtime on multi-node deployments:
- Upgrade to the patched versions: 19.2.4, 19.1.6, 19.0.8, or 18.11.11, depending on the active deployment branch.
- Audit and restrict external access permissions to GraphQL API endpoints if they are not strictly required for public continuous integration workflows.
Detection
Incident response teams and defensive security analysts should focus monitoring efforts on API access logs:
- Inspect web access logs (
production_json.logorapi_json.log) for high-volume or anomalous requests targeting the/api/graphqlendpoint, specifically looking for unauthenticated IP sources executing mutation operations (such asdeleteor comparable commands). - Monitor suspicious HTTP GET query parameters attempting to emulate write or data alteration operations through the GraphQL multiplexer.
“The exploitation of logic vulnerabilities in modern API interfaces such as GraphQL proves that missing authentication paired with loose directive validation can compromise entire repository integrity without leaving traditional malware artifacts behind.”
Wrapping Up
The release of this out-of-band security patch underscores the severity of logical flaws within advanced application programming interfaces like GraphQL. The CVE-2026-19478 vulnerability exposes the inherent risks of insufficient input validation on public APIs, enabling unprivileged remote attackers to manipulate critical assets on self-managed instances. Promptly deploying GitLab’s updated releases remains the only effective defense to prevent project tampering or data loss ahead of public technical disclosure.
References
- Khandelwal, S. (2026). Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects. The Hacker News. https://thehackernews.com/2026/08/critical-gitlab-graphql-flaw-could-let.html
- GitLab Inc. (2026). Critical Patch Release: GitLab 19.2.4, 19.1.6, 19.0.8, and 18.11.11 Released. Vendor Advisory. https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-2-4-released/
- National Vulnerability Database (NVD). (2026). NVD - CVE-2026-19478. U.S. National Institute of Standards and Technology (NIST). https://gitlab.com/gitlab-org/gitlab/-/work_items/611377
- National Vulnerability Database (NVD). (2026). NVD - CVE-2026-19650. U.S. National Institute of Standards and Technology (NIST). https://gitlab.com/gitlab-org/gitlab/-/work_items/612617
- HackerOne. (2026). Security Bug Bounty Reports for GitLab CVE-2026-19478 and CVE-2026-19650. HackerOne Reports 3926431 & 3903669. https://hackerone.com/reports/3926431