CVE-2026-19478: GitLab CE/EE GraphQL Unauthenticated Flaw Actively Exploited
GitLab has released fixes for CVE-2026-19478 (CVSS 9.4, EPSS 0.7% (51st percentile)), a critical-severity code injection flaw [CWE-94]. The vulnerability affects the GraphQL directive in GitLab Community Edition (CE) and Enterprise Edition (EE). According to GitLab, the flaw can allow an unauthenticated attacker to remotely modify or delete public projects and user data under certain conditions.
watchTowr Labs observed exploitation attempts targeting honeypot instances shortly after disclosure and CIRCL.lu lists CVE-2026-19478 in its Vulnerability Lookup actively exploited list with a Confirmed status. Several detailed technical write-ups and proof-of-concept (PoC) exploits are publicly available, further increasing the risk of ongoing attacks. Multiple national CERT agencies have issued alerts for the flaw [1][2][3][4][5][6][7][8][9][10][11].
One additional CVE was included in the vendor’s disclosure. CVE-2026-19650 (CVSS 7.1) is a cross-site request forgery (CSRF) vulnerability [CWE-352] affecting the GraphQL multiplex query handler. No active exploitation has been reported for CVE-2026-19650. Organizations running self-managed GitLab instances should apply mitigations as soon as possible.

Start Your Free Trial
The OPENVAS ENTERPRISE FEED includes remote_banner detection for CVE-2026-19478 and CVE-2026-19650 in GitLab CE/EE. Defenders seeking to detect and protect against the latest emerging IT security threats can download a copy of OPENVAS SCAN with a free two-week trial of the OPENVAS ENTERPRISE FEED.
A Risk Assessment of CVE-2026-19478 in GitLab CE/EE
CVSS 9.4 · CriticalEPSS 0.7% (51st)Actively exploitedPublic PoC
CVE-2026-19478 is exploitable remotely without authentication or user interaction. GitLab reports that exploitation allows an unauthenticated attacker to remotely modify or delete public projects and user data due to flawed GraphQL directive behavior. For organizations that rely on GitLab as a core software delivery system, an unauthorized change has the potential for downstream disruption across build pipelines and production release workflows.
As a DevOps/DevSecOps platform, GitLab often sits at the center of development, security, and operations workflows. A breach can therefore have high-risk consequences, especially where GitLab is integrated into automated deployment processes and CI/CD workflows. It’s also plausible that instances of GitLab vulnerable to CVE-2026-19478 could be leveraged in future supply chain attacks.
watchTowr Labs claims to have reproduced CVE-2026-19478 within minutes of its disclosure by analyzing the patched code. watchTowr also observed honeypot activity indicating in-the-wild exploitation attempts. Several detailed technical analyses [1][2][3] and PoC exploits are available [4][5][6], increasing the risk of ongoing attacks. Multiple national CERT agencies have issued alerts for the flaw [7][8][9][10][11][12][13][14][15][15][16].
The Technical Details for CVE-2026-19478 in GitLab CE/EE
CVE-2026-19478 (CVSS 9.4, EPSS 0.7% (51st percentile)) is a code injection vulnerability in GitLab CE/EE via the GraphQL directive. Exploitation requires only a single unauthenticated HTTP request to a GraphQL endpoint and the ability to resolve an unauthenticated object, such as a public project or accessible user object. The vulnerability stems from GitLab’s FutureFieldFallback logic, which dynamically creates GraphQL fields without an explicit resolver. Without an explicit resolver, graphql-ruby will subsequently use the attacker-controlled field to execute a callable Ruby method on the underlying object. Exploitation allows an unauthenticated attacker to invoke zero-argument Ruby methods to trigger limited command execution.
The attack conditions for CVE-2026-19478 are:
- The attacker must be able to reach the GraphQL endpoint and resolve an object accessible without authentication, such as a public project or accessible user object.
- The malicious query must use @gl_introduced, a GitLab-specific GraphQL directive, to specify a field that does not exist in the instance’s current GraphQL schema, while also specifying a future GitLab version. The @gl_introduced feature is meant to support version compatibility: fields introduced in a newer GitLab release can be ignored when triggered on an older back-end.
- Exploiting the flawed logic causes the FutureFieldFallback Ruby module to synthesize a GraphQL::Schema::Field object for the otherwise nonexistent field requested by the client.
- As documented by graphql-ruby, absent an explicitly configured method or resolver, the field name is used as the method name. This step of the exploit chain allows the attacker-controlled field name to trigger a callable Ruby method.
- For modification or deletion, the triggered Ruby method must be a state-changing method that can be executed without arguments on the exposed object. Public detection material demonstrates using the touch Ruby method against a public project or associated user data.
Mitigating CVE-2026-19478 and CVE-2026-19650 in GitLab CE/EE
CVE-2026-19478 affects all versions of the 18.2, 19.0, 19.1, and 19.2 branches of self-managed GitLab CE/EE installations prior to the patched releases. GitLab has released patches in versions 18.11.11, 19.0.8, 19.1.6, and 19.2.4. For organizations operating self-managed GitLab CE/EE, upgrading to a fixed release is the primary mitigation. GitLab.com and GitLab Dedicated users do not need to take action.
No workarounds or temporary mitigations have been provided by the vendor. However, for users that cannot immediately patch, additional compensating controls can be implemented to reduce the risk posed by CVE-2026-19478 and CVE-2026-19650:
- Restrict external access to self-managed GitLab instances where operationally feasible
- Limit public accessibility to repositories wherever possible
- Monitor for rogue GraphQL requests and unauthorized changes to projects or user data
Patching should be prioritized for internet-accessible instances. However, both CVEs could also be exploited by attackers who already have a foothold inside the victim’s network or by malicious insiders. Security teams should also evaluate the integrity of public projects and associated user data, particularly where GitLab is linked to build or release workflows.
Summary
GitLab versions 18.11.11, 19.0.8, 19.1.6, and 19.2.4 have been released to fix CVE-2026-19478 and CVE-2026-19650. The flaws affect all previous versions of the affected release branches. CVE-2026-19478 is an actively exploited, critical-severity code injection flaw in the GraphQL directive that allows unauthenticated attackers to remotely modify or delete public projects and user data. Publicly available technical write-ups [1][2][3] and PoC exploits [4][5][6] further increase the urgency of upgrading affected GitLab systems. Multiple national CERT agencies have issued alerts for the flaw [7][8][9][10][11][12][13][14][15][15][16], indicating a high level of global risk.
Start Your Free Trial
The OPENVAS ENTERPRISE FEED includes remote_banner detection for CVE-2026-19478 in GitLab CE/EE. Defenders seeking to detect emerging cyber security threats and protect their IT infrastructure can download a copy of OPENVAS SCAN with a free two-week trial of the OPENVAS ENTERPRISE FEED.
Joseph has had a varied and passionate background in IT and cyber security since the late 1980s. His early technical experience included working on an IBM PS/2, assembling PCs and programming in C++.
He also pursued academic studies in computer and systems engineering, anthropology and an MBA in technology forecasting.
Joseph has worked in data analytics, software development and, in particular, enterprise IT security. He specialises in vulnerability management, encryption and penetration testing.



