Software

GitLab patches maximum severity CVSS 10.0 flaw in CI/CD regex compiler

The emergency update, tracked as CVE-2026-97229 and rated 10.0, fixes an integer overflow in the CI/CD regular expression compiler that Rapid7 reproduced on an unpatched server image.

T
By TechQuire Daily Staff TechQuire Daily Staff
October 13, 2026 / 7 min read

GitLab released emergency security patches on October 12, 2026, to close a maximum severity vulnerability in its widely used DevOps platform, warning that self-managed servers could be taken over by unauthenticated attackers. The flaw, tracked as CVE-2026-97229, carries a CVSSv3.1 score of 10.0, the highest possible rating, and lives in the CI/CD regular expression compiler that GitLab uses to validate pipeline configurations.

The affected software is GitLab Community Edition and Enterprise Edition. Fixed versions are 19.4.2, 19.3.5 and 19.2.8. GitLab stressed that GitLab.com, its hosted service, already runs a patched version, and GitLab Dedicated customers need not act. The urgent work falls to organizations running GitLab on their own infrastructure.

Regular expressions are a core part of how GitLab parses and validates CI/CD pipeline definitions. A repository's .gitlab-ci.yml file can contain patterns that GitLab checks before allowing a pipeline to run. CVE-2026-97229 is an integer overflow, classified as CWE-190, in the compiler that turns those patterns into executable matching instructions. Under certain conditions, a specially crafted regular expression can escape the intended sandbox and run operating system commands in the Ruby process that powers GitLab.

The disclosure arrived with unusual speed and detail. Security firm Rapid7 said it independently reproduced arbitrary code execution on an unpatched official GitLab 19.4.1 Community Edition image, and it urged administrators to upgrade outside their normal patch cycles. GitLab stated in its official patch release on October 12, 2026, that the update contains 24 security fixes, with CVE-2026-97229 listed first and six rated high severity.

Key Facts

GitLab released versions 19.4.2, 19.3.5 and 19.2.8 for both Community Edition and Enterprise Edition on October 12, 2026. The patched releases cover all versions from 19.2 before 19.2.8, 19.3 before 19.3.5, and 19.4 before 19.4.2. GitLab strongly recommends that all self-managed installations be upgraded immediately.

Rapid7 reported on October 13, 2026, that it had validated the full attack chain against the official GitLab 19.4.1 CE Linux amd64 image with ASLR enabled, and that the same input did not execute against the patched 19.4.2 CE image. The exploit requires an attacker to commit a malicious .gitlab-ci.yml file and a repository path containing UTF-8 characters to a public project. When the crafted pattern is later evaluated against a specially formed valid UTF-8 repository path, Ruby's Onigmo regex engine recompiles it for the new encoding after those checks. An integer overflow in the compiler's program size calculation then generates invalid regex instructions, allowing attacker controlled Onigmo virtual machine operations in the Ruby process and execution of an operating system command as the GitLab git user.

Although the CVSS vector describes a network attack with no privileges and no user interaction, and with changed scope, Rapid7 noted a practical caveat. An attacker must first be able to plant a malicious CI/CD configuration in a repository. On instances where new users can self-register and create projects, that constraint disappears, making the flaw effectively unauthenticated remote code execution. As of the Rapid7 analysis there was no confirmed in the wild exploitation.

CSO Online reported on October 13, 2026, that GitLab patched five other high severity flaws alongside the critical one. CVE-2026-92883, scored 8.7, is a cross site scripting issue in syntax highlighted output. CVE-2026-16301, scored 8.5, could let a user with the Developer role run CI/CD pipelines on protected branches. CVE-2026-14814, scored 8.2, is a permissive regular expression issue that enables poisoning of cached raw repository files. CVE-2026-81839, scored 7.7, involves scheduled pipeline execution policy, and CVE-2026-96893, scored 7.3, is an instruction injection flaw in the GitLab Duo AI agent platform. GitLab credited researcher Johan Carlsson, who uses the HackerOne handle joaxcar, with reporting the critical flaw through its bug bounty program.

CERT-EU issued Security Advisory 2026-016 and advised on October 12, 2026, that self-managed GitLab CE and EE instances should be upgraded as soon as possible, starting with internet facing instances. The agency confirmed the CVSS score of 10.0 and described how weak validation of regular expressions leads to an integer overflow, which a specially crafted expression in a CI/CD configuration can then turn into code execution. For interim mitigation, GitLab advises restricting anonymous access to public projects and preventing untrusted users from creating or writing to public projects.

Analysis

The bigger picture here is that GitLab's CI/CD pipeline has become a high value target because it sits at the center of the software supply chain. A pipeline can read secrets, push code, sign artifacts and deploy to production. An attacker who can run commands as the git user on a self-managed GitLab server may be able to pivot to protected variables, internal repositories and connected cloud environments. That is why a CVSS 10.0 in this component deserves the emergency response GitLab and Rapid7 are demanding.

The technical details also show why this bug is more than a simple input validation error. The exploit abuses a mismatch between two passes of the same regex engine. GitLab validates the pattern in one encoding, but Ruby's Onigmo engine recompiles it in another when a UTF-8 repository path is evaluated. The integer overflow in the program size calculation then corrupts the generated instructions. This is a subtle compiler level flaw, not a missing sanitize call, and it explains why the vendor score treats the attack as fully unauthenticated while Rapid7 still notes the need to plant a CI/CD configuration.

What this really means is that the real risk depends on instance configuration. On a locked down self-managed GitLab where only trusted employees can create projects and write CI/CD files, an outside attacker has no obvious way to plant the malicious regex. On an open instance that allows self registration, or on any instance where a public project accepts contributions from outsiders, the barrier collapses. Administrators should check their registration and project visibility settings even after patching, because those settings determine how quickly a future bug of this class could be exploited.

The surrounding flaws reinforce the same theme. A Developer role user running pipelines on protected branches, a cache poisoning bug that can expose protected CI/CD variables, and an AI agent instruction injection flaw all point to the same problem: the boundaries between code, configuration, secrets and automation are thin.

Why It Matters

For security teams, the immediate concern is exposure. Self-managed GitLab installations are common in regulated industries, and many of them are reachable from the internet to support remote developers and contractors. CERT-EU specifically advised patching internet facing instances first, which reflects the likelihood that automated scanning for CVE-2026-97229 will begin quickly. Rapid7's reproduction on a default official image means a working proof of concept is already available to defenders and attackers alike.

The impact of a successful exploit is severe. The CVSS vector rates confidentiality, integrity and availability as high, and the scope as changed, meaning the attacker can affect resources beyond the vulnerable component. In practice, an attacker who runs code as the git user could read repository contents, steal CI/CD variables, alter pipeline definitions, or use the server as a foothold for deeper network access. Because GitLab often holds the keys to production deployments, the downstream consequences can reach customers and partners.

There is also a disclosure clock. GitLab said it makes vulnerability issue details public 90 days after the release in which they were patched, so administrators should not wait for a full technical write up before upgrading. The patched release includes database migrations. Single node instances will experience downtime during the upgrade, while multi node instances can apply the fix without downtime using zero downtime procedures.

Next Up

Expect pressure to mount over the coming days. Security researchers and attackers will both test the Rapid7 proof of concept against exposed GitLab servers, and any instance still running 19.4.1 or earlier in the affected branches should be considered at risk. Organizations that cannot patch immediately should apply the interim mitigations GitLab recommends, restrict anonymous access to public projects, and stop untrusted users from creating or writing to public projects.

In the medium term, the 90 day public disclosure will likely bring a detailed technical analysis of the Onigmo integer overflow, which may help defenders write detection rules. GitLab, meanwhile, has shown it will ship an out of band critical patch when needed. The lesson for platform owners is to treat CI/CD infrastructure as tier zero, because a single regex flaw in a pipeline compiler was enough to earn the maximum possible severity score.

Tagged

Comments (0)

No comments yet. Be the first to share your thoughts.