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

T1087 Account Discovery

Persistence

T1098 Account Manipulation

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)

CVE-2026-19478, CVE-2026-19650

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-23GitLab 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-21Critical 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)

Threats related to Critical GitLab GraphQL Flaw (CVE-2026-19478, CVSS 9.4)

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.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

[ 0 threats ] [ 0 det ] [ CRIT: 0 ] [ HIGH: 0 ]
// threat_feed
$ sort --newest
Showing all threats

Latest Threats