Security Guides

GitLab CVE-2026-110264 (CVSS 10.0): how to check and update a self-managed GitLab

GitLab's October 21, 2026 critical patch release fixes CVE-2026-110264 (CVSS 10.0), which may let an unauthenticated user run code on the server. Affected versions, fixed versions, required upgrade stops, and the related Ruby regex fixes (4.0.9, 3.4.12, 3.3.13).

Published 2026-10-25 Updated 2026-10-25 Last verified 2026-10-25 10 min read
On this page

Who this is for: administrators who run GitLab on their own servers or cloud (self-managed), and developers who build applications in Ruby. This page is based on GitLab's patch release notice, Ruby's official announcement, the US National Vulnerability Database (NVD) and CISA's public data. It does not cover how attacks work.

続報待ち:この記事は公式発表に合わせて更新します

as of 08:00 JST, October 25, 2026

まだ分かっていないこと

  • The exact conditions under which the flaw can be triggered (GitLab says only 'under certain conditions')
  • Any change in exploitation status (none reported at disclosure)
  • NVD's own assessment (undergoing analysis)

GitLab published the patch release on October 21, and the Ruby team released fixed versions on October 23. No exploitation has been reported, and the flaw is not in CISA's KEV catalog. GitLab says details will be made public 90 days after the release. This page will be updated if the situation changes.

What to do today (self-managed GitLab)

1

Check the version

On a Linux package (Omnibus) installation, run sudo gitlab-rake gitlab:env:info on a node that runs GitLab Rails; the version appears in the "GitLab information" section. You can also see it in the Admin area when signed in as an administrator. On multi-node setups, check every node.

2

Move to the fixed release in the same line

If you are on 19.4.x, go to 19.4.3; on 19.3.x, go to 19.3.6, and so on. In this site's view, a patch upgrade within the same minor line normally does not involve upgrade stops (check with GitLab's tool to be sure). GitLab says single-node instances should expect downtime, because GitLab does not start until migrations finish. Multi-node instances can use the zero-downtime upgrade procedure.

3

From older versions, check the upgrade stops first

GitLab defines required upgrade stops that must not be skipped. As of October 2026 the list includes 18.2, 18.5, 18.8 and 18.11 for GitLab 18, and 19.2, 19.5, 19.8 and 19.11 for GitLab 19 (of the GitLab 19 stops, 19.2 and 19.5 are released). Enter your current and target versions in GitLab's Upgrade Path tool to get the versions you must pass through. GitLab says you must upgrade to these versions before later ones, and wait for background migrations to finish at each stop.

4

If you cannot upgrade right away, restrict who can reach it

GitLab's notice gives no workaround other than upgrading. Until you upgrade, this site recommends keeping GitLab unreachable from outside your network with a firewall or VPN and turning off new sign-ups. Neither closes the hole, so keep the upgrade moving.

5

Look for traces

GitLab has published two threat detections for self-managed customers (the "Detecting CVE-2026-110264 Exploitation Attempts" section of the notice). If you have log monitoring, load them. Also look for unfamiliar processes, files, administrator accounts and outbound connections. See how to check whether your server was compromised.

Am I affected? Quick table

What you runCVE-2026-110264 (Critical)High-severity flaws and others in the same releaseTarget
19.5.x before 19.5.1AffectedAffected19.5.1
19.4.x before 19.4.3AffectedAffected19.4.3
19.3.x before 19.3.6AffectedAffected19.3.6
19.0.x to 19.2.xAffected (fixed in 19.0.10, 19.1.9, 19.2.9)Fixed only in 19.3.6 and later19.3.6 or later
18.11.x before 18.11.13Affected (fixed in 18.11.13)Fixed only in 19.3.6 and later19.3.6 or later
18.10 and older (7.0 onward)AffectedDepends on the flawNewer version via the upgrade stops
GitLab.comPatchedPatchedNo action
GitLab DedicatedPatched from 19.3.5-internal0, 19.4.2-internal0SameNo action, per GitLab

The affected range differs for each of the other flaws (for example, CVE-2026-15723 starts at 10.1 and CVE-2026-112212 at 18.3). Check the table in GitLab's notice for the exact ranges.

Current version

Before the fix, the critical flaw remains

18.11.13 to 19.2.9

Critical fixed, High flaws remain

19.3.6 / 19.4.3 / 19.5.1

Every fix in this release

The 18.11 to 19.2 fixes are a temporary landing point that fixes only the critical flaw. The High-severity fixes arrive only from 19.3.6.

What was disclosed (from GitLab's notice)

GitLab Critical Patch Release (October 21, 2026)
CVE
CVE-2026-110264 (CWE-190: integer overflow)
Severity
Critical, CVSS v3.1 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H, GitLab's rating)
Issue
Under certain conditions, an integer overflow when compiling a specially crafted regular expression could allow an unauthenticated user to execute arbitrary code on the GitLab server
Affected
GitLab CE/EE from 7.0, before 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3 and 19.5.1
Already fixed
GitLab.com; GitLab Dedicated from 19.3.5-internal0 and 19.4.2-internal0
Reported by
An external researcher, through GitLab's bug bounty program on HackerOne
Exploitation
Not stated in the notice; not in CISA's KEV catalog as of October 25
10.0
CVSS for CVE-2026-110264 (GitLab's rating)
No login
Privileges required (PR:N)
7 lines
Release lines with a fix (18.11 to 19.5)
12
CVEs fixed in the same release

The same release fixes 11 other vulnerabilities, two of them High. CVE-2026-15723 (CVSS 8.2) could let an authenticated user take over an existing LDAP-backed account when OmniAuth SAML and LDAP auto-linking are both enabled. CVE-2026-112212 (CVSS 7.5) could let the cached OAuth/OIDC discovery document be poisoned so that certain flows are sent to an external server. The rest are five Medium and four Low.

CISA's SSVC assessment dated October 21 lists exploitation as "none", automatable as "yes" and technical impact as "total". Finishing the upgrade while no exploitation has been reported is the cheapest way through this (this site's view).

The root cause is in Ruby's regex engine: for Ruby developers

On October 23, the Ruby team released Ruby 4.0.9, 3.4.12 and 3.3.13, which fix bugs in Ruby's regular expression engine (Onigmo). They fix three bugs related to four CVEs assigned by GitLab (CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264). The three besides CVE-2026-110264 were fixed in GitLab 19.4.1 and 19.4.2.

Regexp.timeout does not help

According to Ruby's announcement, the bugs are reached only when an application compiles a regexp from a string an attacker controls (Regexp.new, Regexp.union, Regexp.compile, or interpolation such as /#{input}/). Applications that use only developer-written regexps are not affected. Regexp.timeout does not protect against these bugs, and limiting pattern length is not reliable either.

Ruby 3.3 is in security-only maintenance, but 3.3.13 includes these fixes as an exception because GitLab assigned CVEs to issues that rely on them. Ruby 3.2 reached end of life on April 1, 2026, and has no fixed release.

GitLab's Linux packages and cloud native images carry GitLab's own regexp patches, so GitLab administrators update GitLab itself, not the server's Ruby. If you installed GitLab from source, this site recommends updating that Ruby to a fixed release as well.

Risky patterns

  • Passing search-box or filter input straight to Regexp.new
  • Running patterns that users register as server-side regexps
  • Assuming Regexp.timeout or a length limit makes it safe
  • Staying on Ruby 3.2 or older after end of life

Safer patterns

  • For plain text search, use Regexp.escape so the input is matched literally
  • Ask whether letting users write regexps is really needed
  • If it is, run it with a different regex engine or in an isolated process (this site's view)
  • Upgrade Ruby to 4.0.9, 3.4.12 or 3.3.13 or later

Whether a gem or framework you depend on builds regexps from user input cannot be seen from your own code alone, so upgrading Ruby is the most reliable fix. For watching dependencies, see how to monitor dependency CVEs with osv-scanner.

What self-hosted Git servers tend to forget

Running GitLab yourself removes some accidents, such as a repository made public by mistake, but the job of patching moves to you. With a flaw that reaches back to 7.0, the servers that stopped updating long ago have the most upgrade stops to pass and the heaviest work.

This site's view: keep up to at least one stop behind the latest required upgrade stop in normal times. Then an emergency upgrade is one or two steps, not a long chain. For the trade-offs of self-hosting, see self-hosted Git vs GitHub: which is safer.

What is still unknown

ItemStatus
The exact conditions for the flawNot stated ("under certain conditions"; details to be published 90 days after the release)
ExploitationNot stated (not in CISA's KEV as of October 25)
Public exploit codeNot stated
NVD assessmentUndergoing analysis (GitLab's rating is 10.0)
CVEs for the Ruby bugs themselvesNot yet requested by the Ruby team (may be revisited)

Sources

  • GitLab, "GitLab Critical Patch Release: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10, 18.11.13" (October 21, 2026) — docs.gitlab.com
  • Ruby, "Regexp compilation fixes related to GitLab's CVE-2026-89078, CVE-2026-93577, CVE-2026-97229 and CVE-2026-110264" (October 23, 2026) — ruby-lang.org
  • Ruby, "Ruby Maintenance Branches" — ruby-lang.org
  • GitLab, "Upgrade paths" — docs.gitlab.com
  • GitLab, "Maintenance Rake tasks" (gitlab:env:info) — docs.gitlab.com
  • NIST NVD, "CVE-2026-110264" — nvd.nist.gov
  • CISA, "Known Exploited Vulnerabilities Catalog" — cisa.gov

Change log

2026-10-25: First version, based on GitLab's patch release notice, Ruby's official announcement, NVD and CISA's KEV catalog (October 23, 2026 version).

Latest breaking reports

All breaking reports →

FAQ

QWhat happened?
A

On October 21, 2026, GitLab released critical patch versions 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 and 18.11.13 for CE and EE. The most severe flaw, CVE-2026-110264 (CVSS 10.0), is an integer overflow when compiling a specially crafted regular expression that, under certain conditions, could allow an unauthenticated user to execute arbitrary code on the GitLab server.

QIs my GitLab affected?
A

A self-managed GitLab CE/EE instance is affected if it runs 7.0 or later and is older than the fixed version for its line: 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 or 18.11.13. GitLab.com is already patched. For GitLab Dedicated, tenants on 19.3.5-internal0, 19.4.2-internal0 or later already have the fixes.

QIs upgrading to 18.11.13 or 19.2.9 enough?
A

It fixes CVE-2026-110264, but according to GitLab's notice the High-severity flaws in the same release (CVE-2026-15723, CVE-2026-112212) and the others are fixed only in 19.3.6, 19.4.3 and 19.5.1. Treat 18.11.13 through 19.2.9 as a temporary landing point for the critical flaw and plan a move to 19.3.6 or later (this site's view).

QIs it being exploited?
A

GitLab's notice does not say it has been exploited, and it is not in CISA's Known Exploited Vulnerabilities (KEV) catalog as of October 25, 2026. GitLab has published two threat detections to help self-managed customers spot exploitation attempts.

QI build Ruby applications. Does this affect me?
A

It may. On October 23, Ruby released 4.0.9, 3.4.12 and 3.3.13 to fix bugs in its regular expression engine (Onigmo). Only applications that compile a regexp from an attacker-controlled string (Regexp.new, Regexp.union, /#{input}/ and so on) are affected; applications that use only developer-written regexps are not. Ruby says Regexp.timeout does not protect against these bugs and limiting pattern length is not reliable either.

QWe are still on Ruby 3.2 or older.
A

Ruby 3.2 reached end of life on April 1, 2026, and the only fixed releases are 4.0.9, 3.4.12 and 3.3.13. Move to 3.3.13 or later. Until you can, the Ruby team advises not compiling regexps from untrusted input.