# Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4) Could Let Unauthenticated Attackers Delete Public Projects

> GitLab shipped an emergency out-of-band patch on 2026-08-17 for two GraphQL vulnerabilities: CVE-2026-19478 (CVSS 9.4, CWE-94), which lets an unauthenticated attacker remotely modify or delete public projects and user data via a GraphQL directive, and CVE-2026-19650 (CVSS 7.1, CWE-352), a CSRF flaw in the GraphQL multiplex query handler that lets an unauthenticated attacker trigger mutations via GET requests. No public PoC or active exploitation has been reported; fixes ship in 18.11.11, 19.0.8, 19.1.6, and 19.2.4.

- **Published:** 2026-08-17T00:00:00Z
- **Last reviewed:** 2026-08-23T07:36:10.528Z
- **Canonical:** https://intel.threadlinqs.com/threat/TL-2026-2048
- **ID:** TL-2026-2048
- **Severity:** CRITICAL (CVSS 9.4)
- **Category:** VULNERABILITY
- **Status:** ACTIVE
- **Detections:** 9 · **IOCs:** 48 (full data via the Threadlinqs MCP server — Purple tier)
- **CVEs:** CVE-2026-19478, CVE-2026-19650, CVE-2026-3988, CVE-2026-4922

## Description

On 2026-08-17, GitLab released an out-of-band emergency patch — 18.11.11, 19.0.8, 19.1.6, and 19.2.4 — outside its normal twice-monthly release cadence (the prior scheduled patch, 19.2.2/19.1.4/19.0.6, had shipped just five days earlier on 2026-08-12 addressing 13 unrelated flaws). The emergency release fixes two vulnerabilities in the GitLab GraphQL API affecting both Community Edition and Enterprise Edition.

CVE-2026-19478 (CVSS 3.1: 9.4 Critical, AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H, CWE-94 Improper Control of Generation of Code) allows an unauthenticated user to remotely modify or delete public projects and user data via a GraphQL directive, under conditions GitLab has not publicly detailed — the advisory deliberately withholds which directive is involved. The vector requires no authentication, no privileges, and no user interaction, with high impact to both integrity and availability and low impact to confidentiality. GitLab credits HackerOne researcher hiimguardian (report #3926431, tracked internally as GitLab work item #611377) for the finding.

CVE-2026-19650 (CVSS 3.1: 7.1 High, AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L, CWE-352 Cross-Site Request Forgery) is a CSRF weakness in the GraphQL multiplex query handler, caused by improper request validation, that lets an attacker cause a victim's authenticated browser session to execute GraphQL mutations via GET requests — GET requests are not expected to carry state-changing side effects, so the multiplex handler's failure to validate/reject mutation execution over GET breaks the CSRF protections a properly-scoped POST-only mutation endpoint would have. Exploitation requires the victim to interact with attacker-controlled content (UI:R, e.g. a malicious link) while authenticated to GitLab. GitLab credits HackerOne researcher kreep (report #3903669, work item #612617).

Both flaws affect GitLab CE/EE 18.2 through 18.11.10, 19.0.0 through 19.0.7, 19.1.0 through 19.1.5, and 19.2.0 through 19.2.3. GitLab.com and GitLab Dedicated were already running patched code at disclosure; self-managed instances must upgrade manually. No new database migrations are required and no downtime is expected on multi-node deployments. As of publication (2026-08-17) no public exploit code exists and no active exploitation has been observed; confirmed directly against the CISA Known Exploited Vulnerabilities catalog, neither CVE-2026-19478 nor CVE-2026-19650 (nor any GitLab CVE) is currently KEV-listed. GitLab has scheduled full technical disclosure of the underlying GraphQL directive and multiplex-handler root cause for approximately 90 days post-patch (~mid-November 2026), consistent with coordinated-disclosure norms for unexploited critical vulnerabilities.

This disclosure is the third distinct unauthenticated, network-vector GraphQL API vulnerability GitLab has patched in 2026, establishing the GraphQL surface as a recurring source of authentication/request-validation and input-validation gaps. On 2026-03-25, GitLab patched CVE-2026-3988 (CVSS 7.5 High, CWE-407 Inefficient Algorithmic Complexity, AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H), which let an unauthenticated user cause a denial of service by making a self-managed instance unresponsive via improper input validation in GraphQL request processing (affecting 18.5.0-18.8.6, 18.9.0-18.9.2, and 18.10.0; fixed in 18.8.7/18.9.3/18.10.1). On 2026-04-22, GitLab patched CVE-2026-4922 (CVSS 8.1, CWE-352, AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N), a distinct CSRF flaw that similarly allowed an unauthenticated user to execute GraphQL mutations on behalf of an authenticated user, fixed in 18.11.1/18.10.4/18.9.6. Three separate unauthenticated GraphQL-API CVEs inside five months (DoS in March, CSRF in April, this Critical/CSRF pair in August) indicate a structural weakness in how the GraphQL layer validates input and request state, independent of and prior to today's disclosure.

Separately, and unrelated to the GraphQL surface, GitLab's 2026 vulnerability posture was already under scrutiny before this disclosure: on 2026-07-24, the depthfirst security research team (credit also to Yuhang Wu for coordination) publicly released working exploit code for an unauthenticated-to-remote-code-execution chain (no CVE assigned) affecting self-managed GitLab 15.2.0 through 19.0.1. That chain combined two memory-safety bugs in the Ruby `Oj` JSON parser (a nesting-stack buffer overflow and a 16-bit integer-truncation heap-pointer leak, reported 2026-05-21, fixed upstream in Oj 3.17.3 on 2026-06-04) with GitLab's `ipynbdiff` gem, which parses attacker-supplied Jupyter Notebook (`.ipynb`) file contents with Oj during commit-diff rendering — an authenticated user who uploads a crafted notebook and gets a victim (or CI) to view its diff can achieve command execution as the `git` user. GitLab merged the underlying fix as a non-security-labeled change on 2026-06-10, six weeks before the PoC's public release, leaving unpatched self-managed servers exposed in the interim. This RCE chain has no GraphQL involvement, but its July disclosure — immediately preceding this August GraphQL patch — reinforces a 2026-wide pattern of critical, unauthenticated-reachable GitLab vulnerabilities being disclosed in rapid succession.

## MITRE ATT&CK

- T1595.002 Active Scanning: Vulnerability Scanning
- T1592.002 Gather Victim Host Information: Software
- T1588.006 Obtain Capabilities: Vulnerabilities
- T1190 Exploit Public-Facing Application
- T1204.001 User Execution: Malicious Link
- T1565.001 Data Manipulation: Stored Data Manipulation
- T1485 Data Destruction
- T1499.004 Endpoint Denial of Service: Application or System Exploitation
- T1195.001 Supply Chain Compromise: Compromise Software Dependencies and Development Tools
- T1098 Account Manipulation
- T1087 Account Discovery
- T1213 Data from Information Repositories
- T1531 Account Access Removal
- T1213.003 Data from Information Repositories: Code Repositories
- T1036 Masquerading
- T1211 Exploitation for Defense Evasion
- T1195.002 Supply Chain Compromise: Compromise Software Supply Chain

## Sources

- [Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects](https://thehackernews.com/2026/08/critical-gitlab-graphql-flaw-could-let.html)
- [GitLab Patch Release: 19.2.4, 19.1.6, 19.0.8, 18.11.11](https://docs.gitlab.com/releases/patches/patch-release-gitlab-19-2-4-released/)
- [NVD - CVE-2026-19478](https://nvd.nist.gov/vuln/detail/CVE-2026-19478)
- [NVD - CVE-2026-19650](https://nvd.nist.gov/vuln/detail/CVE-2026-19650)
- [GitLab Advisory Database (GLAD)](https://advisories.gitlab.com/)
- [HackerOne Report #3926431 (CVE-2026-19478)](https://hackerone.com/reports/3926431)
- [HackerOne Report #3903669 (CVE-2026-19650)](https://hackerone.com/reports/3903669)
- [GitLab Work Item #611377 (CVE-2026-19478 tracking issue)](https://gitlab.com/gitlab-org/gitlab/-/work_items/611377)
- [GitLab Work Item #612617 (CVE-2026-19650 tracking issue)](https://gitlab.com/gitlab-org/gitlab/-/work_items/612617)
- [GitLab Security Update: High-Severity Vulnerabilities Patched in April Release (CVE-2026-4922)](https://securityonline.info/gitlab-security-update-april-2026-session-hijacking-fix/)
- [NVD - CVE-2026-4922](https://nvd.nist.gov/vuln/detail/CVE-2026-4922)
- [NVD - CVE-2026-3988 (GitLab GraphQL DoS)](https://nvd.nist.gov/vuln/detail/CVE-2026-3988)
- [OSV BIT-gitlab-2026-3988 (GitLab GraphQL Inefficient Algorithmic Complexity)](https://osv.dev/vulnerability/BIT-gitlab-2026-3988)
- [Researcher Publishes GitLab RCE PoC Letting Authenticated Users Run Commands as Git](https://thehackernews.com/2026/07/researcher-publishes-gitlab-rce-poc.html)
- [CISA Known Exploited Vulnerabilities Catalog (verified: no GitLab CVE listed)](https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json)

## Full data

Detection queries (Splunk SPL / Microsoft KQL / Sigma) and IOC values require the Threadlinqs MCP server (Purple tier): https://intel.threadlinqs.com/mcp

Canonical: https://intel.threadlinqs.com/threat/TL-2026-2048
