Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4) Could Let Unauthenticated Attackers Delete Public Projects
Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4) (TL-2026-2048) is a critical-severity software vulnerability scored CVSS 9.4, first published 2026-08-17 and last reviewed 2026-08-23. It has no confirmed attribution, affects GitLab Inc. GitLab Community Edition (CE), references 2 CVEs (CVE-2026-19478, CVE-2026-19650), maps to 17 MITRE ATT&CK techniques (T1036, T1087, T1098), and is covered by 9 detection rules and 48 indicators of compromise.
Key facts for TL-2026-2048
- Threat ID
- TL-2026-2048
- Severity
- CRITICAL
- CVSS
- 9.4 (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H)
- Status
- ACTIVE
- Category
- VULNERABILITY
- First published
- 2026-08-17
- Last reviewed
- 2026-08-23
- Attribution confidence
- LOW
- Motivation
- UNKNOWN
- Detection rules
- 9
- Indicators of compromise
- 48
- Updates
- 2026-08-23 · 4 updates · revalidated 4× · latest source
Malware and tooling in Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
Malware and tooling: GitLab GraphQL API (/api/graphql)
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.
How Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4) works
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 techniques used in TL-2026-2048
Defense Evasion
T1036 Masquerading; T1211 Exploitation for Defense Evasion
Discovery
Persistence
Initial Access
T1190 Exploit Public-Facing Application; T1195.001 Supply Chain Compromise: Compromise Software Dependencies and Development Tools; T1195.002 Supply Chain Compromise: Compromise Software Supply Chain
Execution
T1204.001 User Execution: Malicious Link
Collection
T1213 Data from Information Repositories; T1213.003 Data from Information Repositories: Code Repositories
Impact
T1485 Data Destruction; T1499.004 Endpoint Denial of Service: Application or System Exploitation; T1531 Account Access Removal; T1565.001 Data Manipulation: Stored Data Manipulation
Resource Development
T1588.006 Obtain Capabilities: Vulnerabilities
Reconnaissance
T1592.002 Gather Victim Host Information: Software; T1595.002 Active Scanning: Vulnerability Scanning
Affected products and versions in Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
- GitLab Inc. — GitLab Community Edition (CE)
Vulnerable versions: 18.2-18.11.10; 19.0.0-19.0.7; 19.1.0-19.1.5; 19.2.0-19.2.3
Fixed in: 18.11.11; 19.0.8; 19.1.6; 19.2.4 - GitLab Inc. — GitLab Enterprise Edition (EE)
Vulnerable versions: 18.2-18.11.10; 19.0.0-19.0.7; 19.1.0-19.1.5; 19.2.0-19.2.3
Fixed in: 18.11.11; 19.0.8; 19.1.6; 19.2.4
Remediation for Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
Patches
- GitLab CE/EE 18.11.11
- GitLab CE/EE 19.0.8
- GitLab CE/EE 19.1.6
- GitLab CE/EE 19.2.4
Immediate actions
- Upgrade self-managed GitLab CE/EE to 18.11.11, 19.0.8, 19.1.6, or 19.2.4 (whichever tracks your branch)
- Confirm GitLab.com / GitLab Dedicated tenancy is on patched code (already patched by GitLab at disclosure)
- Audit recent public-project deletions and modifications for anomalies predating the patch
- Confirm self-managed instances are also current on 18.11.5+/19.0.2+ (or later) to close the unrelated Oj/ipynbdiff RCE chain (no CVE assigned) disclosed 2026-07-24
Workarounds
- No official workaround published; GitLab recommends immediate upgrade to a patched release
Longer-term hardening
- Monitor the GitLab Advisory Database (advisories.gitlab.com) and subscribe to GitLab security release announcements
- Restrict unauthenticated access to the GraphQL endpoint (/api/graphql) at a WAF/reverse-proxy layer where feasible
- Review GraphQL query/mutation logging and alerting for anomalous unauthenticated mutation attempts
- Given the recurrence of unauthenticated GraphQL-API weaknesses in 2026 (CVE-2026-3988 DoS, CVE-2026-4922 CSRF, CVE-2026-19478/19650), prioritize regression testing of GraphQL request-validation, CSRF, and input-validation controls on every future GitLab upgrade
CVEs associated with Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
Weaknesses (CWE) in Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
CWE-94, CWE-352
Timeline of Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
Showing the 20 most recent tracked events.
- GitLab patches a distinct, prior CSRF vulnerability in the GraphQL API (CVE-2026-4922, CVSS 8.1) in 18.11.1/18.10.4/18.9.6, allowing an unauthenticated user to execute GraphQL mutations on behalf of an authenticated user — a recurring weakness pattern in GraphQL CSRF protections that precedes CVE-2026-19650.
- Two memory-safety bugs in the Ruby Oj JSON parser (used by GitLab's ipynbdiff gem) are reported upstream — unrelated to the GraphQL API but part of the same 2026 GitLab critical-vulnerability wave; fixed upstream in Oj 3.17.3 on 2026-06-04 and merged into GitLab as a non-security-labeled change on 2026-06-10.
- GitLab's July security release (13 vulnerabilities) includes CVE-2026-15975, an unauthenticated denial-of-service flaw in merge request discussions — additional GraphQL/API-adjacent context alongside the March (CVE-2026-3988) and April (CVE-2026-4922) prior disclosures.
- Security researchers at depthfirst publicly release working exploit code (no CVE assigned) chaining the Oj bugs via GitLab's Jupyter Notebook diff rendering to achieve remote code execution as the git user on unpatched self-managed GitLab 15.2.0-19.0.1 servers — unrelated to GraphQL but immediately preceding, and contextually cited alongside, this August GraphQL disclosure.
- GitLab ships its regularly scheduled patch release 19.2.2/19.1.4/19.0.6, fixing 13 unrelated security flaws — the release immediately preceding this out-of-band emergency patch.
- The Hacker News publishes coverage of both CVEs, noting no public exploit code or active exploitation has been disclosed and citing the July 2026 GitLab RCE PoC as recent related context.
- GitLab confirms GitLab.com and GitLab Dedicated tenants are already running patched code; only self-managed instances require manual upgrade.
- GitLab ships an out-of-band emergency patch release — 18.11.11, 19.0.8, 19.1.6, 19.2.4 — outside its normal twice-monthly cadence.
- GitLab publishes security advisories for CVE-2026-19478 (CVSS 9.4) and CVE-2026-19650 (CVSS 7.1), both affecting the GraphQL API in CE/EE.
- SOC Prime publishes technical analysis of CVE-2026-19478 with detection guidance and hunting leads.
- CyCognito publishes exposure analysis identifying approximately 40,000-45,000+ internet-facing GitLab instances, concentrated in Industrials (29.3%), Information Technology (19.3%), and Communication Services (17.4%).
- OX Security publishes a technical deep dive revealing the @gl_introduced directive mechanism, the FutureFieldFallback code path, and GitLab's NilResolver patch (commit e283c6ad).
- A public proof-of-concept exploit is published on GitHub by davkharrr, demonstrating check, modify, and destroy modes against public projects and users — escalating exploitability from THEORETICAL to POC_PUBLIC.
- WatchTowr principal researcher Jake Knott reproduces the vulnerability within minutes of disclosure by reverse-engineering the patch diff alone.
- watchTowr's Attacker Eye honeypot network detects the first in-the-wild exploitation attempts targeting CVE-2026-19478 against exposed GitLab instances, escalating exploitability from POC_PUBLIC to ACTIVE.
- No confirmed in-the-wild exploitation as of this date; CISA KEV not updated; EPSS score at 0.72% (51st percentile).
- Rescana publishes vulnerability analysis with MITRE ATT&CK mapping and risk assessment.
- Horizon3.ai publishes a root-cause technical writeup on CVE-2026-19478 and releases a NodeZero Rapid Response validation test so customers can confirm exposure/exploitability of their self-managed GitLab instances.
- Active exploitation attempts continue globally against exposed self-managed GitLab instances; no C2 infrastructure or attacker attribution identified.
- GitLab's coordinated-disclosure window closes (~90 days post-patch), after which full technical detail of the exploited GraphQL directive and multiplex-handler root cause is expected to be published.
Update history for TL-2026-2048
- 2026-08-23: What changed No field escalation — severity (CRITICAL), exploitability (ACTIVE), status (ACTIVE), and CVSS (9.4) already reflect the current state from prior revalidations. New indicators (3) 3 new named entities: Mondoo and CSO Patrick Mün
- 2026-08-23 — GitLab Warns of Active Exploitation of Critical GraphQL Directive Flaw (CVE-2026-19478): What changed No change to severity (CRITICAL), exploitability (ACTIVE), or status (ACTIVE) — all already at their escalated values as of the prior revalidation on 2026-08-21. The newer report adds root-cause depth: it names GitLab's CVE-202
- 2026-08-21 — Critical GitLab Code Injection Vulnerability (CVE-2026-19478) Actively Exploited in Attacks: What changed Exploitability escalated from POC_PUBLIC to ACTIVE: watchTowr's Attacker Eye honeypot network detected in-the-wild exploitation attempts against CVE-2026-19478 beginning 2026-08-19, contradicting the existing record's 2026-08-1
- 2026-08-20: What changed Exploitability escalated THEORETICAL → POC_PUBLIC: a working PoC (GitHub user davkharrr) was published 2026-08-18, under 24h after the emergency patch, and WatchTowr independently reproduced the exploit from the patch diff alon
Sources cited for Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
- Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects
- GitLab Patch Release: 19.2.4, 19.1.6, 19.0.8, 18.11.11
- NVD - CVE-2026-19478
- NVD - CVE-2026-19650
- GitLab Advisory Database (GLAD)
- HackerOne Report #3926431 (CVE-2026-19478)
- HackerOne Report #3903669 (CVE-2026-19650)
- GitLab Work Item #611377 (CVE-2026-19478 tracking issue)
- GitLab Work Item #612617 (CVE-2026-19650 tracking issue)
- GitLab Security Update: High-Severity Vulnerabilities Patched in April Release (CVE-2026-4922)
- NVD - CVE-2026-4922
- NVD - CVE-2026-3988 (GitLab GraphQL DoS)
- OSV BIT-gitlab-2026-3988 (GitLab GraphQL Inefficient Algorithmic Complexity)
- Researcher Publishes GitLab RCE PoC Letting Authenticated Users Run Commands as Git
- CISA Known Exploited Vulnerabilities Catalog (verified: no GitLab CVE listed)
Threats related to Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)
- GitLab Patches 13 Security Flaws (incl. CVE-2026-6267, CVE-2026-12436) Enabling Data Exposure, CI/CD Tampering, and DoS
- Oracle August 2026 CSPU: Nine Vulnerabilities in Agile Engineering Data Management 6.2.1, Including Unauthenticated Web Services Security Flaws (CVE-2026-71052, CVE-2026-71053)
- SAP Patches Critical Code Injection, Memory Corruption Vulnerabilities (CVE-2026-58231, CVSS 10.0)
- Adobe Patches Critical RCE Flaws in ColdFusion, Campaign Classic, and Commerce (CVE-2026-48362, CVSS 10.0)
- GitLab RCE Chain via Malicious Jupyter Notebooks Exploiting Oj Ruby JSON Parser Flaws
- AI-Assisted "HTTP Terminator" Uncovers Novel HTTP Desync Techniques and Apache Traffic Server Zero-Day (CVE-2026-63078)
Detection coverage for TL-2026-2048
As of 2026-08-23, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-2048 across Splunk SPL, Microsoft KQL and Sigma, covering 48 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.