
On October 12, 2026, GitLab released a critical patch for Community Edition (CE) and Enterprise Edition (EE) covering versions 19.4.2, 19.3.5, and 19.2.8. The most important fix in this release addresses CVE-2026-97229, which carries a CVSS v3.1 score of 10.0 (Critical). According to GitLab’s official advisory, under certain conditions this vulnerability could allow an unauthenticated user to execute arbitrary code on the GitLab server through a specially crafted regular expression placed in a CI/CD configuration. GitLab attributes the root cause to insufficient regular expression validation, and the issue is classified as an integer overflow (CWE-190) in the CI/CD Regular Expression Compiler component. The vulnerability was reported by Johan Carlsson (joaxcar) through HackerOne.
The same release also fixes a number of other vulnerabilities, including CVE-2026-92883 (cross-site scripting in syntax-highlighted output, CVSS 8.7 – High) and CVE-2026-16301 (improper authorization in the downstream pipeline creation service, CVSS 8.5 – High). Both of these require an authenticated user and do not belong to the same impact class as CVE-2026-97229. This follows our earlier analysis of the GitLab GraphQL vulnerabilities.
Rapid7 independently reproduced the vulnerability on an unpatched GitLab 19.4.1 CE instance and confirmed code execution. However, there is no confirmed in-the-wild exploitation and no public proof of concept (PoC) at this time. GitLab.com is already running the patched version; self-managed installations should be upgraded immediately.
Because the vulnerability was disclosed only recently and may quickly become a target for exploitation attempts, this article does not share PoC code, exploit input, or dynamic analysis (debugger) output; instead, we examine the mechanism from a defensive perspective. Throughout this section we deliberately distinguish between two types of information: what GitLab’s official advisory states, and the technical details based on Rapid7’s independent research. GitLab plans to make the issue details public 90 days after the patch release, so technical details from official sources are limited for now.
When managing CI/CD processes, GitLab evaluates the conditions defined in the .gitlab-ci.yml file. Regular expressions can appear in several places in this file, such as =~ and !~ comparisons in rules:if expressions or patterns defined under only / except. GitLab has not disclosed exactly which part of the configuration must contain the triggering regex.
GitLab’s advisory states that, due to insufficient validation, a specially crafted regex in a CI/CD configuration could, under certain conditions, allow an unauthenticated user to execute arbitrary code on the server. The advisory does not describe the memory-level mechanism.
According to Rapid7’s analysis dated October 13, 2026, the exploitation chain consists of the following stages:
Rapid7 reproduced code execution on the official GitLab 19.4.1 CE (Linux amd64) image with ASLR enabled, and showed that the same input did not execute on the patched 19.4.2 image. Rapid7 states that further details on the root cause and exploitation chain will be published in a separate technical analysis.
The bug fixes section of GitLab’s release notes lists patches to the Ruby 3.3 and 3.4 regexp component for all three release branches, one of which concerns program-size calculation. Although this fix appears to touch the same area as the mechanism Rapid7 describes, GitLab has not drawn any connection between these patches and CVE-2026-97229. This link is therefore our own inference and should not be read as confirmed, official information.
An integer overflow can lead to memory safety issues, but the mechanism in between must be demonstrated separately. Current sources do not describe this vulnerability as a classic heap buffer overflow or pointer-overwrite scenario. The confirmed root cause is an overflow in the regex compiler’s program-size calculation and the invalid regex instructions it produces.
The CVSS vector specifies the privileges required as PR:N (none). In practice, however, exploitation depends on whether the attacker can place a malicious CI/CD configuration where it will be processed. In the scenario Rapid7 validated, the attacker must be able to commit a malicious .gitlab-ci.yml file and a specially formed UTF-8 repository path to a branch in a public project. On self-managed instances where users can self-register and create projects, an ordinary account satisfies this prerequisite, which effectively removes it. The description “unauthenticated exploitation” is therefore accurate, but it should not be read as meaning RCE is achievable on every installation without any additional prerequisites.
The CVSS v3.1 vector for CVE-2026-97229 is AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H: the vulnerability is exploitable over the network with low complexity, requires no privileges or user interaction, involves a scope change (Scope: Changed), and has a high potential impact on confidentiality, integrity, and availability. Successful exploitation results in unauthorized command execution on the GitLab server in the context of the git user. This does not automatically mean root access; however, because the git user has broad access to GitLab application data and configuration, the organizational impact is high. Possible consequences include:
Whether these consequences materialize depends on the privileges the attacker obtains, the GitLab runtime environment, and additional security controls such as network segmentation. The highest risk lies with self-managed instances that are internet-facing, allow user sign-up, and let users create public projects. Although active exploitation has not yet been confirmed, the time pressure is high: as The Hacker News notes, in-the-wild probing of another CVSS 10.0 GitLab vulnerability disclosed last month (CVE-2026-85706) was observed within hours of its disclosure.
GitLab.com is already running the patched version, and GitLab Dedicated customers do not need to take any action. Organizations hosting GitLab on their own servers (self-managed) must upgrade immediately to one of the fixed versions below.
Affected Version Range | Fixed Version |
19.2.x (before 19.2.8) | 19.2.8 |
19.3.x (before 19.3.5) | 19.3.5 |
19.4.x (before 19.4.2) | 19.4.2 |
According to the official advisory, CVE-2026-97229 affects only the 19.2 and later release branches. Organizations running older versions are not directly affected by this CVE but may be affected by other vulnerabilities fixed in the same release, and should plan a move to a supported version. The patch includes database migrations: single-node instances will experience downtime during the upgrade, while multi-node instances can be upgraded using the zero-downtime procedure. Version 19.3.5 also includes post-deploy migrations.

Subscribe to our cyber security newsletter