GitLab fixed a critical bug present in every release since 7.0 and shipped the fix for seven release lines, so most teams can patch without a major jump. GitLab.com is already covered. Here is how to check your version and upgrade in one step.
What GitLab Released on October 21
On October 21, 2026, GitLab shipped seven patch releases of Community and Enterprise Edition at once, 19.5.1, 19.4.3, 19.3.6, 19.2.9, 19.1.9, 19.0.10 and 18.11.13, and recommends that every self-managed installation move to one of them.
If your team uses GitLab.com, there is nothing to do. It already runs the fixed code. GitLab Dedicated tenants on 19.3.5-internal0, 19.4.2-internal0 or later are covered too. This post is for everyone who runs their own instance, whether from the Linux package, in Docker or on Kubernetes.
The short version is good news. A fix exists for every supported line and four older ones, it is an ordinary patch upgrade with no major version jump, and nothing on the public record says anyone has used the bug.
The Fix That Matters Most
The release closes thirteen security issues. One of them carries it.
CVE-2026-110264 is an integer overflow in GitLab's regular expression compiler. According to GitLab's advisory, under certain conditions a specially crafted regular expression could let someone who is not signed in run code on the GitLab server. GitLab scores it 10.0, the top of the scale, and lists every version from 7.0 onward as affected. That is about twelve years of releases.
The release notes show where the repair lands. Each of the seven versions carries a patch to the Ruby regular expression engine that GitLab bundles, described as a "repeat ID overflow" patch on the newer lines and a "repeat-range double-free" patch on 19.1, 19.0 and 18.11. That is why the cure is simply the new GitLab package or image. The fixed Ruby comes inside it, and there is nothing separate to install.
| You run | Upgrade to |
|---|---|
| 19.5.0 | 19.5.1 |
| 19.4.x | 19.4.3 |
| 19.3.x | 19.3.6 |
| 19.2.x | 19.2.9 |
| 19.1.x | 19.1.9 |
| 19.0.x | 19.0.10 |
| 18.11.x | 18.11.13 |
GitLab offers no configuration workaround, so the upgrade is the whole job. The good part is that it is a small one.
Why This Is Calmer Than the Score Suggests
A 10.0 reads like an emergency, and on an instance left unpatched for months it would be. The situation around this one is better than the number.
GitLab normally fixes the current release and the two before it. This time it backported the fix four lines further, to 19.2, 19.1, 19.0 and 18.11. A team that had fallen a few months behind can patch in place instead of planning a major upgrade under pressure.
As of October 27, CISA's catalog of known exploited vulnerabilities does not list CVE-2026-110264, and GitLab's advisory does not mention attacks. The bug was reported privately through GitLab's HackerOne bug bounty by the researcher joaxcar. GitLab keeps the full technical issue private for 90 days after a fix, which puts it around January 2027. Self-managed teams get a quiet window to upgrade before the details are public.
GitLab also published two threat detections alongside the fix, which vendors do less often than they should. More on those below.
A Busy Autumn for One Engine
This is the third round of regular expression fixes reported by the same researcher in five weeks, and the three make more sense side by side.
| Released | Versions | Issue | Score | Who could trigger it |
|---|---|---|---|---|
| September 23 | 19.4.1, 19.3.3, 19.2.7 | CVE-2026-89078 and CVE-2026-93577 | 9.9 | Any signed-in user, through CI/CD configuration |
| October 12 | 19.4.2, 19.3.5, 19.2.8 | CVE-2026-97229, in the CI/CD regular expression compiler | 10.0 | No sign-in needed, versions 19.2 to 19.4 only |
| October 21 | 19.5.1 and six more | CVE-2026-110264, in the regular expression compiler | 10.0 | No sign-in needed, every version since 7.0 |
Two things follow. If you upgraded on October 12, you still need this one, because 19.4.2 and 19.3.5 sit below the new fixed versions. And the pattern itself is a healthy one. A researcher is working through one engine methodically, GitLab is turning each report into a release within days, and every round leaves less to find. We covered the September round in GitLab Fixes Two 9.9 RCEs Any Signed-In User Can Trigger.
Check Which Version You Run
On a Linux package install, either of these prints it.
sudo gitlab-rake gitlab:env:info | grep -A2 "GitLab information"
cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
In Docker, run the second one inside the container, with your own container name in place of gitlab.
docker exec -it gitlab cat /opt/gitlab/embedded/service/gitlab-rails/VERSION
Administrators can also read the version in the Admin area of the web interface. Compare what you see with the table above. Anything at or above the version in the right-hand column for your line is already fixed.
Upgrade in One Step
Start with a backup you trust. The Linux package backs up the database automatically before it installs a new version, but GitLab's own documentation still advises keeping a full, current backup yourself. sudo gitlab-backup create covers repositories and data. Copy /etc/gitlab/gitlab.rb and /etc/gitlab/gitlab-secrets.json somewhere safe as well. The backup does not include them, and a restore without the secrets file cannot decrypt things like CI/CD variables.
Then install the exact version for your line. On Debian or Ubuntu with Enterprise Edition:
sudo apt update && sudo apt install gitlab-ee=19.5.1-ee.0
Community Edition uses gitlab-ce=19.5.1-ce.0. On RHEL or AlmaLinux 9:
sudo dnf install gitlab-ee-19.5.1-ee.0.el9
Swap in 19.4.3, 18.11.13 or whichever target matches your line. Pinning the exact version matters. A bare install reaches for the newest release, and a jump across minor versions can cross a required upgrade stop.
For Docker, change the image tag to the fixed version, for example gitlab/gitlab-ee:19.5.1-ee.0, pull it, and recreate the container with the same volumes. On Kubernetes, move to the GitLab Helm chart release that maps to your target version, which GitLab lists on its version mappings page.
A patch upgrade inside the same minor version needs no stop. If you run something older than 18.11, plan the route with GitLab's Upgrade Path tool. The required stops are 18.2, 18.5, 18.8 and 18.11, then 19.2 and 19.5.
Expect a short pause on a single server. GitLab notes that 19.4.3 and 19.3.6 include database migrations, so a single-node instance stays down until they finish. Multi-node setups can stay online with GitLab's zero-downtime procedure. For most small instances this is a short maintenance window, not a project.
Two Detections Worth Wiring Up
GitLab security released two threat detections for self-managed customers with this fix. They are named "Onigmo native worker crash" and "Org mode render error burst", and the names say what they watch for.
Onigmo is the regular expression engine inside Ruby, and GitLab runs on Ruby. The first detection looks for GitLab worker processes crashing inside that engine. The second looks for a sudden run of errors while GitLab renders Org mode files, a plain-text format it displays much like Markdown. GitLab has not said which feature an attacker would go through, so treat the second name as a signal its team chose to watch, not as a confirmed way in.
If your logs already flow into something that can alert, two cheap rules follow from those names. Alert on repeated worker crashes in the Puma and Sidekiq logs under /var/log/gitlab, and alert on a spike of rendering errors for .org files. Neither replaces the upgrade, and on a patched instance both should stay quiet.
The Other Twelve Fixes
Two more are rated high, and one of them depends on how your users sign in.
| Issue | CVE | Score | Affected from |
|---|---|---|---|
| LDAP account takeover when SAML and LDAP auto-linking are both on | CVE-2026-15723 | 8.2 High | 10.1 |
| OAuth and OIDC discovery responses poisoned through a shared cache | CVE-2026-112212 | 7.5 High | 18.3 |
| Read-only API token reaching a project's incoming email address | CVE-2026-12664 | 6.8 Medium | 18.2 |
| SAML or LDAP membership lock skipped for older requests | CVE-2026-16255 | 5.9 Medium | 12.0 |
| Internal server credentials exposed in response headers | CVE-2026-105777 | 4.3 Medium | 17.6.5 |
| Private milestone details readable through the group milestones API | CVE-2026-13319 | 4.3 Medium | 15.10 |
| Paid AI features reachable without a subscription | CVE-2026-112378 | 4.3 Medium | 17.8 |
The remaining four are rated low. They cover confidential issue titles leaking through cached merge request pages, an approval policy that could be skipped during rule sync, vulnerability records removed on an error path, and an admin lock on Amazon Q settings that a group owner could undo.
If your instance links SAML sign-ins to LDAP accounts automatically, the 8.2 deserves a second look. With both features on, a signed-in user could take over an existing LDAP-backed account through the email lookup used during linking, without the owner doing anything. The same upgrade closes it.
What This Means for Your Team
For a team on GitLab.com, nothing changes. For a team running its own GitLab, this is one planned maintenance window this week rather than a weekend of firefighting. Pick the target from the table, take a backup, pin the version and upgrade.
It is also a good moment to make sure the next release finds you early. GitLab publishes every patch release in an RSS feed. Scheduled patches land on the second and fourth Wednesday of each month, with critical fixes in between. Point the feed at your team chat and a release like this one becomes a routine ticket.
If you would rather hand the upgrade over, we build and look after CI/CD platforms, self-managed GitLab included. An upgrade like this is a short task with a price agreed before we start.
Sources
Or read how we handle it in CI/CD Pipeline Setup.
Related News
Two Critical NGINX Bugs Dropped This Week And Who Is Actually At Risk
F5 shipped out-of-band patches on June 17, 2026 for two critical NGINX flaws, CVE-2026-42530 and CVE-2026-42055, both CVSS 9.2 and both unauthenticated. The headline is scary, but the exploitable surface is narrow. Here is which versions and configs are at risk, why it is a denial of service for most rather than code execution, and what to do.
SecurityHow a TanStack npm Compromise Got Grafana's GitHub Codebase Stolen
Grafana Labs confirmed that attackers downloaded source code from its GitHub environment after a TanStack npm package compromise leaked one developer's GitHub workflow token. One token missed in the rotation, in one of the better-instrumented companies on the internet.
SecurityFrom September 11 the EU Cyber Resilience Act Puts a 24-Hour Clock on Exploited Vulnerabilities and Most Makers Have No Runbook
From 11 September 2026, Article 14 of the EU Cyber Resilience Act forces makers of products with digital elements to report actively exploited vulnerabilities within 24 hours, with a 72-hour follow-up and a 14-day final report. It is the first binding CRA deadline, and the hard part is operational: detecting, triaging, and filing a conformant report inside a single day.