Skip to content

Security Not yet confirmed elsewhere1 publisher 2 min read Published

Rapid7 turns GitLab's CVSS 10.0 regex overflow into command execution on an official 19.4.1 image

Rapid7 built a working command-execution exploit for GitLab's CVSS 10.0 CI/CD regex overflow, CVE-2026-97229. Rapid7 says its route needs a malicious CI config pushed to a public project first, a prerequisite that conflicts with GitLab's PR:N rating.

The Watch · Security desk

Send a correction

Illustration accompanying Rapid7 turns GitLab's CVSS 10.0 regex overflow into command execution on an official 19.4.1 image
Generated illustration
A hidden comment makes Onigmo read a larger bound The PoC's {5(?#)7805} in pieces: a leading 5 and a trailing 7805. Onigmo ignores the (?#) comment and reads the bound as 57,805.

The PoC writes its quantifier bound as {5(?#)7805}. Before the (?#) comment sits a 5; after it sits 7805. Onigmo ignores the inline comment and reads the bound as 57,805.

A hidden comment makes Onigmo read a larger bound (Number read from the PoC's {5(?#)7805})
ItemValueClaim
Digits before the (?#) comment5 value read13
Digits after the (?#) comment7,805 value read13
Bound Onigmo reads57,805 value read13

What happened

  • GitLab shipped 19.4.2, 19.3.5 and 19.2.8 on October 12, 2026 to fix an integer overflow in how it handles CI/CD regular expressions.
  • GitLab.com was patched before disclosure, and Dedicated customers do not need to act.
  • Rapid7's PoC reliably runs arbitrary commands as GitLab's git account on the official gitlab-ce 19.4.1 Linux amd64 image with ASLR enabled.
  • GitLab's release notes do not report exploitation in the wild at the time of disclosure.

Why it matters

  • Who's exposed exposure Installs on 19.2 below 19.2.8, 19.3 below 19.3.5 or 19.4 below 19.4.2 are in scope on every deployment type unless GitLab says otherwise, so the upgrade falls to the operator.
  • What doesn't add up contradiction Rapid7 cannot say whether the reported attack needs the push step, so operators cannot count it as a control while the HackerOne report stays private.
  • Who has to decide decision A PoC that runs commands reliably on an official image with ASLR on removes the usual reason to wait for more detail, so self-managed operators on these lines face a patch-now call.

The flaw sits in how GitLab handles regular expressions that CI rules run against repository paths. Both rules:exists:regexp and rules:changes:regexp support that matching [8], and one way to get an expression evaluated during static configuration processing is to put it on a conditional include [9]. Each match then crosses from CI configuration into native Onigmo with a repository path as the subject [10].

GitLab wraps those expressions in limits. It checks source length, rejects subroutine calls and large repeat bounds, rejects compiled objects over one megabyte, and attaches a 50-millisecond timeout [11]. The repeat-bound scanner recognizes only contiguous digits [12]. Rapid7's PoC writes the bound as {5(?#)7805}. The (?#) is an inline regex comment, Onigmo ignores it, and the engine reads the bound as 57,805 [13].

Rapid7 analyzed one end-to-end route [15]. It starts after the attacker has pushed the malicious CI configuration and a specially named path to a public project, and only the final CI lint request is unauthenticated [15]. GitLab's description of the flaw is possible code execution by an unauthenticated user [3]. Rapid7 wrote that "because the underlying report remains private, we do not yet know how the reported attack avoids it" [17].

Public: GitLab's advisory, the fixed builds, which are four days old as of October 16 [14], and Rapid7's analysis of that one route. Private: joaxcar's HackerOne report [2], which Rapid7 says remains private [16].

What to watch

  • Publication of joaxcar's HackerOne report, which would show whether the reported attack skips the public-project push that Rapid7's route needs.
  • Any report of exploitation in the wild; GitLab's release notes reported none at disclosure.

Clarity's read

What the record supports and how the coverage leans. The claims behind it follow.

Reality

Evidence65
Adoption
Not scored
Hype gap−10
Incentives
Not scored
Confidence60
Why these scores

Claim ledger

Ranked by verification strength, evidence, and original report placement.

  1. [1]

    On October 12, 2026, GitLab released 19.4.2, 19.3.5 and 19.2.8 to fix CVE-2026-97229, an integer overflow in its CI/CD regular-expression handling.

    Reported SupportedView cited source
  2. [2]

    The issue was reported through HackerOne by joaxcar.

    Reported SupportedView cited source
  3. [3]

    GitLab assigned CVE-2026-97229 a CVSS score of 10.0 and described possible code execution by an unauthenticated user.

    Reported SupportedView cited source

Get this ledger inside ChatGPT. Ask about any of our stories and the answer brings its figure, each claim’s verdict and the sources. Free, no account.

Add to ChatGPTAdd to Claude

Sources

1 independent publisher whose own reporting we read for this story.

  1. blog.rapid7.com

    1 article · October 16, 2026

    Rapid7 Analysis: GitLab CI/CD Regex Integer Overflow (CVE-2026-97229)

Share your take

Let Clarity write the post for you.

Signed-in readers get a short post drafted on this story in the register they choose — narrative, analytical, or a direct position — editable to the last word before it goes anywhere. The share buttons at the top of this story work without an account.

Topics and entities

Follow any of these and your For You feed starts watching them — no settings page required.

Topics

Loading related stories