Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-19478

CVE-2026-19478: GitLab GraphQL RCE Vulnerability

CVE-2026-19478 is a remote code execution flaw in GitLab CE/EE that allows unauthenticated attackers to modify or delete public projects via GraphQL. This post explains its impact, affected versions, and mitigation steps.

Published:

CVE-2026-19478 Overview

CVE-2026-19478 is an authorization bypass in GitLab Community Edition (CE) and Enterprise Edition (EE) that allows unauthenticated attackers to modify or delete public projects and user data through a crafted GraphQL directive. The flaw affects GitLab CE/EE versions 18.2 before 18.11.11, 19.0 before 19.0.8, 19.1 before 19.1.6, and 19.2 before 19.2.4. The vulnerability is classified under CWE-94: Improper Control of Generation of Code and reaches attackers directly over the network without user interaction.

Critical Impact

Unauthenticated remote attackers can tamper with or destroy public project content and user data by submitting a crafted GraphQL directive to affected GitLab instances.

Affected Products

  • GitLab CE/EE 18.2 through 18.11.10
  • GitLab CE/EE 19.0 through 19.0.7, and 19.1 through 19.1.5
  • GitLab CE/EE 19.2 through 19.2.3

Discovery Timeline

  • 2026-08-17 - CVE-2026-19478 published to NVD
  • 2026-08-18 - Last updated in NVD database

Technical Details for CVE-2026-19478

Vulnerability Analysis

The defect resides in GitLab's GraphQL API layer, where a specific directive bypasses server-side authorization checks. GraphQL directives modify query execution behavior, and when the server fails to enforce access controls during directive processing, mutations reach protected resolvers without validated identity context. An unauthenticated attacker can therefore invoke mutation paths that alter or destroy public project data.

The issue is cataloged as CWE-94, reflecting improper control over how the GraphQL engine generates and executes queries. The attack surface is any internet-reachable GitLab instance running an affected version. Successful exploitation preserves confidentiality only partially, but severely impacts integrity and availability of repositories, issues, and related metadata exposed as public.

Root Cause

GitLab's GraphQL schema evaluates a directive before authorization policies apply to the target field. This ordering allows a query augmented with the directive to invoke mutation resolvers as if the caller were permitted. The result is a missing authorization decision on write operations against public project resources.

Attack Vector

Exploitation requires only network access to the /api/graphql endpoint. The attacker submits a GraphQL mutation containing the affected directive, targeting a public project or user-owned object. No credentials, tokens, or user interaction are required. See the HackerOne Report #3926431 and GitLab Work Item #611377 for coordinated disclosure details.

No verified proof-of-concept code is published. Refer to the GitLab Patch Release 19.2.4 advisory for authoritative technical detail.

Detection Methods for CVE-2026-19478

Indicators of Compromise

  • Unauthenticated POST requests to /api/graphql containing directive syntax paired with mutation operations.
  • Unexpected modifications, deletions, or ownership changes on public projects with no corresponding audit log user identity.
  • Spikes in HTTP 200 responses from /api/graphql originating from IPs with no prior authenticated session.

Detection Strategies

  • Enable and review GitLab's application and production logs (production_json.log, graphql_json.log) for mutation requests lacking a current_user or token_id field.
  • Alert on GraphQL request bodies containing directive keywords combined with mutation names such as projectDestroy, projectUpdate, or userDelete.
  • Correlate audit events showing anonymous or system-attributed changes to public resources.

Monitoring Recommendations

  • Ingest GitLab web and API logs into a centralized SIEM and baseline normal GraphQL traffic volume and mutation ratios.
  • Monitor rate and diversity of source IPs hitting /api/graphql after the CVE publication date.
  • Track integrity of repositories using signed commit verification and periodic snapshots.

How to Mitigate CVE-2026-19478

Immediate Actions Required

  • Upgrade GitLab CE/EE to 18.11.11, 19.0.8, 19.1.6, or 19.2.4 depending on the deployed major version.
  • Restrict inbound access to the GitLab GraphQL endpoint from untrusted networks until patching completes.
  • Audit recent changes to public projects and user records for unauthorized modification or deletion.

Patch Information

GitLab released fixed builds in versions 18.11.11, 19.0.8, 19.1.6, and 19.2.4. Details are documented in the GitLab Patch Release 19.2.4 advisory. Self-managed operators should apply the patch aligned to their current major version and verify the running version with gitlab-rake gitlab:env:info.

Workarounds

  • Place the GitLab instance behind a web application firewall rule that blocks unauthenticated GraphQL mutations.
  • Temporarily disable anonymous access to public projects via Admin Area → Settings → General → Visibility and access controls.
  • Rate-limit and require authentication on /api/graphql at the reverse proxy layer until the patch is applied.
bash
# Example NGINX snippet to require authentication on the GraphQL endpoint
location = /api/graphql {
    if ($http_authorization = "") { return 401; }
    proxy_pass http://gitlab-workhorse;
}

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.