Full research report

Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects

Original reporting โ†—
โ˜… Threat intelligence assessment high confidence

Executive assessment

GitLab's emergency release of 17 August 2026 addresses two GraphQL-layer vulnerabilities that collectively expose self-managed instances to unauthenticated write and delete operations against public projects. CVE-2026-19478 is the more critical: its CWE-94 classification and CVSS vector confirm a low-complexity, no-credential, no-interaction network attack path, making it a high-priority target for adversaries once technical details become public in November 2026. The secondary CSRF flaw (CVE-2026-19650) compounds the risk by opening a social-engineering vector for state-changing mutations via GET requests. A significant remediation gap exists for organisations running GitLab 18.2 through 18.10, which are within the affected range but receive no patch under GitLab's current support policy. No exploitation evidence or public PoC was found during this investigation, but the attack surface and impending technical disclosure window warrant immediate patching and active monitoring by all self-managed GitLab operators.

What happened

GitLab issued an emergency out-of-cycle critical security release on 17 August 2026, addressing two GraphQL vulnerabilities in Community Edition (CE) and Enterprise Edition (EE). The primary flaw, CVE-2026-19478 (CVSS 9.4), enables an unauthenticated attacker to remotely modify or delete public projects and user data via a GraphQL directive. A companion high-severity cross-site request forgery (CSRF) flaw, CVE-2026-19650 (CVSS 7.1), allows unauthenticated execution of write mutations via GET requests when a victim interacts with a malicious link. Both vulnerabilities were reported through GitLab's HackerOne bug bounty programme and received patches in versions 19.2.4, 19.1.6, 19.0.8, and 18.11.11.

Affected scope

GitLab CE/EE self-managed installations from version 18.2 through 19.2.3. GitLab.com and GitLab Dedicated are already running patched versions and require no action. Installations on branches 18.2 through 18.10 fall within the affected range but do not receive patches, as those branches are beyond GitLab's supported maintenance window.

Technical assessment

CVE-2026-19478 is classified as CWE-94 (improper control of code generation) with a CVSS vector of AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H, confirming low-complexity network exploitation with no credentials and no victim interaction required, resulting in high integrity and availability impact. The weakness resides in GitLab's GraphQL directive handling; the specific directive and triggering conditions remain undisclosed pending GitLab's 90-day technical disclosure window (expected mid-November 2026). CVE-2026-19650 (CWE-352) exploits improper request validation in the GraphQL multiplex query handler, permitting state-changing mutations to be triggered via crafted GET requests in a CSRF scenario; it requires user interaction and scores CVSS 7.1 (AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L).

Recommended defensive actions

  1. Apply GitLab's emergency patches immediately: upgrade self-managed CE/EE to 19.2.4, 19.1.6, 19.0.8, or 18.11.11 as appropriate for your branch.
  2. Upgrade or migrate installations running GitLab 18.2 through 18.10 to a supported and patched branch (18.11.11 minimum), as those versions are within the vulnerable range and will not receive a fix.
  3. Restrict network access to GitLab's GraphQL endpoint (/api/graphql) to authenticated or internally trusted networks if immediate patching is not possible.
  4. Monitor GraphQL access logs for anomalous unauthenticated mutation requests targeting project modification or deletion operations.
  5. Subscribe to GitLab security notifications to receive future critical out-of-cycle releases without delay.

Uncertainties and evidence gaps

  • The specific GraphQL directive responsible for CVE-2026-19478 and the exact conditions required for exploitation have not been disclosed; technical details are withheld until approximately mid-November 2026.
  • GitLab branches 18.2 through 18.10 are within the vulnerable range but will not receive patches; GitLab has not stated whether a workaround is available for those installations.
  • CISA Known Exploited Vulnerabilities catalogue inclusion could not be directly verified during this investigation (403 response); CISA advisory status remains unconfirmed.
  • A prior July 2026 GitLab exploitation incident referenced in source reporting as contextual background was not investigated here; its relationship to the current disclosure, if any, is unassessed.

Vulnerability flow

Defender-oriented path reconstructed only from sourced report findings. Unknown stages are omitted.

AccessNetwork-accessible; no authentication or victim interaction required for CVE-2026-19478
ComponentGitLab GraphQL API directive processing layer (CE/EE)
MechanismImproper control of code generation (CWE-94) via a GraphQL directive permits unauthenticated write operations on public project resources under unspecified conditions withheld by GitLab
ImpactUnauthorised modification or deletion of public projects and associated user data on self-managed instances
DetectionAnomalous unauthenticated GraphQL mutation requests targeting project modification or deletion operations in GitLab web access logs
MitigationUpgrade to GitLab 19.2.4, 19.1.6, 19.0.8, or 18.11.11; restrict /api/graphql endpoint access to authenticated sessions at the network perimeter if patching is delayed
Exploitation status

No exploitation confirmed and no public proof-of-concept code identified as of 18 August 2026; GitLab's advisory discloses no in-the-wild activity for either CVE.

Investigation began by verifying the primary source article's claims against GitLab's official patch release documentation and NVD entries. Both CVEs were independently confirmed across GitLab's own release page and NVD, with CVSS scores, CWE classifications, and affected versions consistent across sources. No public proof-of-concept exploit code was found in tracked repositories, and CISA KEV status could not be directly verified. GitLab's deliberate non-disclosure of technical specifics pending a 90-day window defines the current uncertainty ceiling and keeps confidence bounded by the absence of exploitation evidence.

  1. What claims does the primary source article make about the vulnerabilities?
    Fetched The Hacker News article to extract stated CVE IDs, CVSS scores, affected versions, patch versions, and exploitation status
    thehackernews.com โ†—

    Article reports CVE-2026-19478 (CVSS 9.4, unauthenticated GraphQL code injection) and CVE-2026-19650 (CVSS 7.1, CSRF in GraphQL multiplex handler), patched 17 August 2026 in versions 19.2.4, 19.1.6, 19.0.8, 18.11.11; no exploitation or PoC disclosed.

    why Establishes the baseline claims requiring independent verification; treated as untrusted reporting pending corroboration.

  2. Does GitLab's official release documentation confirm the stated CVE details and patch versions?
    Fetched GitLab's official critical patch release page
    docs.gitlab.com โ†—

    Confirmed CVE-2026-19478 (CVSS 9.4, CWE-94, CVSS vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:H, reported by hiimguardian via HackerOne) and CVE-2026-19650 (CVSS 7.1, CWE-352, CVSS vector AV:N/AC:L/PR:N/UI:R/S:U/C:N/I:H/A:L, reported by kreep via HackerOne), along with all affected and patched version ranges.

    why Primary authoritative source; confirms all core article claims and adds CWE classifications and reporter attribution not present in the article.

  3. Does NVD independently confirm CVE-2026-19478 as a GitLab vulnerability with the stated severity?
    Fetched NVD entry for CVE-2026-19478
    nvd.nist.gov โ†—

    NVD confirms GitLab CE/EE as the affected product, CVSS 9.4, CWE-94 code injection, and the described affected version ranges, independently of GitLab's own documentation.

    why Provides a second authoritative, independent source domain corroborating core technical details; elevates confidence to high.

  4. Does NVD independently confirm CVE-2026-19650?
    Fetched NVD entry for CVE-2026-19650
    nvd.nist.gov โ†—

    NVD confirms GitLab CE/EE, CVSS 7.1, CWE-352 CSRF, and the same affected and patched version ranges, consistent across all prior sources.

    why Independently validates the secondary CVE; both CVEs are now confirmed across two independent authoritative domains.

  5. Is public proof-of-concept or exploit code available for either CVE?
    Searched for PoC exploit code on GitHub and reviewed a community-tracked 2026 CVE PoC repository
    github.com โ†—

    Neither CVE-2026-19478 nor CVE-2026-19650 appeared in the repository's indexed 2026 PoC entries; no PoC surfaced across search results.

    why No weaponisable code is publicly circulating as of the investigation date, moderating the immediate exploitation risk despite the high CVSS score.

  6. Has CISA added either CVE to its Known Exploited Vulnerabilities catalogue?
    Attempted to fetch the CISA KEV catalogue directly

    Request returned HTTP 403 Forbidden; CISA KEV inclusion for these CVEs could not be verified.

    why Cannot confirm or deny CISA KEV status; this is recorded as a material uncertainty in the assessment.

Targetsself-managed GitLab CE/EE installationsDevOps and software development organisations

Research coverage

All 68 registered source leaves were evaluated for this run: 61 completed, 0 were unavailable, 0 failed and 7 were disabled. For this story, 4 registered sources supplied useful evidence (2 primary, 2 corroborating, 0 contextual and 0 PoC/exploit references). 57 completed sources contained no matched information for this story.

Primary evidence Independent corroboration Operational context PoC reference Checked โ€” no match Unavailable Failed Disabled
Complete source-by-source audit 68 sources
SourceRun resultValueWhy it was useful โ€” or not
NVDcve ok900 records Primary evidence2 matched items Supplied a vendor or government advisory opened and verified during focused research.
The Hacker Newsnews ok9 records Primary evidence1 matched items Published the source report used to frame and date the event.
CISA Alertsnews ok empty0 records Corroborating1 matched items A page from this source was opened and verified during focused research.
CISA KEVkev ok1666 records Corroborating1 matched items A page from this source was opened and verified during focused research.
AlienVault OTXdark_web ok10 records Checked โ€” no match The source completed, but none of its retained records matched this story.
BleepingComputernews ok8 records Checked โ€” no match The source completed, but none of its retained records matched this story.
CIRCL CVEcve ok30 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Cisco PSIRTvendor_advisory ok5324 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Cisco Talosnews ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
deepdarkCTI CVE most exploiteddeepdarkcti ok94 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Discorddeepdarkcti ok7 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI exploitsdeepdarkcti ok24 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI forumsdeepdarkcti ok264 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI malware as a servicedeepdarkcti ok7 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI malware samplesdeepdarkcti ok3 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI marketsdeepdarkcti ok127 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI phishingdeepdarkcti ok19 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI ransomware gangsdeepdarkcti ok685 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI RATsdeepdarkcti ok1 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Telegram infostealerdeepdarkcti ok130 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Telegram threat actorsdeepdarkcti ok1009 records Checked โ€” no match The source completed, but none of its retained records matched this story.
deepdarkCTI Twitter threat actorsdeepdarkcti ok39 records Checked โ€” no match The source completed, but none of its retained records matched this story.
DNSDumpster domain IOC enrichmentresearch ok1 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Exploit-DBexploit_reference ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
FIRST EPSSepss ok Checked โ€” no match The source completed, but none of its retained records matched this story.
Fortinet PSIRTvendor_advisory disabled Disabled Disabled in the source registry; no check was attempted.
GitHub topic: cveresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
GitHub topic: exploitresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
GitHub topic: penetration-testingresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
GitHub topic: pocresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
GitHub topic: vulnerabilityresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
GreyNoiseexploit_reference ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
KrebsOnSecuritynews ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
LinkedIn RSS proxy feeds (disabled)research disabled Disabled Disabled in the source registry; no check was attempted.
MalwareBazaardark_web ok10 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #cveresearch ok20 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #cybersecurityresearch ok13 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #exploitresearch ok20 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #infosecresearch ok19 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #malwareresearch ok20 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #ransomwareresearch ok20 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #threatintelresearch ok17 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Mastodon #vulnerabilityresearch ok19 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Metasploit module metadataexploit_reference ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Microsoft MSRCvendor_advisory ok1590 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Microsoft Securitynews ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
MISP Galaxyresearch ok2 records Checked โ€” no match The source completed, but none of its retained records matched this story.
MISP threat actor galaxyactor ok0 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Palo Alto Networks PSIRTvendor_advisory ok25 records Checked โ€” no match The source completed, but none of its retained records matched this story.
ProjectDiscovery nuclei templatesexploit_reference ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Rapid7news ok2 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Reddit r/AskNetsec (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/cybersecurity (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/malware (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/netsec (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
Reddit r/ReverseEngineering (pending API approval)research disabled Disabled Disabled in the source registry; no check was attempted.
SANS ISCnews ok1 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Shadowserver public aggregate honeypot observationsexploit_reference ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Shodanresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Sigma Rulesresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Sophos IOCsresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
ThreatFoxthreat_intelligence ok100 records Checked โ€” no match The source completed, but none of its retained records matched this story.
UK NCSCnews ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
Unit42 IOCsresearch ok empty0 records Checked โ€” no match The source completed but returned no records in the collection scope.
URLhausdark_web ok10 records Checked โ€” no match The source completed, but none of its retained records matched this story.
VirusTotal Community IOC enrichmentresearch ok4 records Checked โ€” no match The source completed, but none of its retained records matched this story.
VulnCheck KEVkev ok500 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Vulnerability Lookupcve ok30 records Checked โ€” no match The source completed, but none of its retained records matched this story.
Additional verified pages 6 opened outside the registered collection
Vendor & gov advisories3
GitLab Critical Patch Release: 19.2.4, 19.1.6, 19.0.8, 18.11.11 docs.gitlab.com โ†—

Official GitLab patch release confirming both CVEs, CVSS vectors, affected versions, and HackerOne reporter attribution

NVD Entry: CVE-2026-19478 nvd.nist.gov โ†—

NVD independently confirms CVSS 9.4, CWE-94 code injection, network-accessible unauthenticated vector for GitLab CE/EE

NVD Entry: CVE-2026-19650 nvd.nist.gov โ†—

NVD independently confirms CVSS 7.1, CWE-352 CSRF, user-interaction requirement for GitLab CE/EE

Analysis & research1
Critical GitLab GraphQL Flaw Could Let Unauthenticated Attackers Delete Public Projects thehackernews.com โ†—

Primary reporting; patch details and scope claims verified against official sources