Developer platforms, tools and supply chain

GitLab security releases, October 2026 (seven High flaws)

GitLab check

Two GitLab releases are covered. The critical patch release of 12 October 2026 (19.4.2, 19.3.5, 19.2.8) fixed 24 vulnerabilities, and the one of 21 October 2026 (19.5.1, 19.4.3, 19.3.6) fixed 12 more. Seven rated High are checked here, with the affected ranges GitLab published for each.

CVE CVSS Edition What Affected
CVE-2026-92883 8.7 CE and EE Stored cross-site scripting in syntax highlighting, through a crafted repository 19.1 before 19.2.8, 19.3 before 19.3.5, 19.4 before 19.4.2
CVE-2026-16301 8.5 CE and EE A user with the Developer role can run CI/CD pipelines on protected branches without authorization 18.7 before 19.2.8, 19.3 before 19.3.5, 19.4 before 19.4.2
CVE-2026-14814 8.2 CE and EE A permissive regular expression in repository file access lets a user poison the cache of raw repository files, so other users' pipelines run crafted content and protected variables can be exposed Every version before 19.2.8, 19.3 before 19.3.5, 19.4 before 19.4.2
CVE-2026-15723 8.2 CE and EE When OmniAuth SAML and LDAP auto-linking are both enabled, an authenticated user can take over an existing LDAP-backed account, because the LDAP email lookup used during identity linking does not sanitize its input 10.1 before 19.3.6, 19.4 before 19.4.3, 19.5 before 19.5.1
CVE-2026-81839 7.7 EE only After a project is transferred, scheduled pipeline execution policy records are not cleaned up, so pipelines run with the new group's privileges 18.1 before 19.2.8, 19.3 before 19.3.5, 19.4 before 19.4.2
CVE-2026-96893 7.3 EE only Prompt injection in the GitLab Duo Agent Platform: crafted content in the AI conversation context can cause unintended commands attributed to other users 19.1 before 19.2.8, 19.3 before 19.3.5, 19.4 before 19.4.2
CVE-2026-112212 7.5 CE and EE Cache poisoning of the OAuth and OpenID Connect discovery document: an attacker without an account can point some sign-in flows at a server they control (it needs a shared cache) 18.3 before 19.3.6, 19.4 before 19.4.3, 19.5 before 19.5.1

The start of the affected range for CVE-2026-112212 comes from write-ups of GitLab's advisory, not from the CVE record, which was not available when this checker was written. Every other range is from GitLab's release pages or the CVE record.

Fixed See the table: each flaw has its own fixed releases, and 19.5 and later are not listed as affected by any
Which release is a full fix 19.5.1, 19.4.3 and 19.3.6. The 21 October release backported only the regular-expression fix (CVE-2026-110264) to 19.2.9, 19.1.9, 19.0.10 and 18.11.13, so those leave the High flaws above open. 19.2.9 is the case to watch for: it is current for the regex flaw and still exposed to CVE-2026-15723 and CVE-2026-112212
Move to A fixed release of a supported line (a line below those named in the table is affected)
Scope Self-managed instances (Omnibus, source and Helm). GitLab.com already ran the fixes, and GitLab Dedicated needed no action
Not checked The Medium and Low flaws of the two releases

The two regular-expression flaws of October (CVE-2026-97229 and CVE-2026-110264) are covered by the ruby/ checker. Run both: each flaw has its own fixed versions, so being current for one says nothing about the other. An 18.11.13 instance, for example, has the regular-expression fix and still needs a later release for five of the seven flaws in this table.

How the script reads an install

The version comes from GitLab's own VERSION file (Omnibus: /opt/gitlab/embedded/service/gitlab-rails/VERSION, or version-manifest.txt; source installs: /home/git/gitlab/VERSION) and from the tags of gitlab/gitlab-ce and gitlab/gitlab-ee images known to docker or podman. An image on disk is not necessarily a running container, and the script says so.

A build whose VERSION file ends in -pre or -rc is a build before a release, not the release: it is reported as a warning (exit 1), not judged as the version it leads to.

Each flaw is judged on its own ranges. The edition matters for CVE-2026-81839 and CVE-2026-96893, which affect Enterprise Edition only. It is read from the package or image marker (-ee, -ce), the product name in the manifest, or the presence of GitLab's ee directory. When it cannot be read, the script raises those flaws as warnings that say they apply only to Enterprise Edition, instead of skipping them.

Quick start

curl -fLO https://raw.githubusercontent.com/PrivacySafe/security-patches/refs/heads/main/gitlab/gitlab-check.sh
less gitlab-check.sh
chmod +x gitlab-check.sh
./gitlab-check.sh check

Commands

Command What it does
check (default) Finds GitLab and judges the seven flaws separately, naming the fixed version for the install's line. Exit 0 nothing exposed, 1 an install without a fix
version Prints the script version

Env: GITLAB_ROOT (Omnibus root, default /opt/gitlab) and GITLAB_SOURCE_DIRS (source installs, default /home/git/gitlab).

There is no hunt

GitLab published no indicators of exploitation for these flaws, so the script has none.

Update

Move to 19.5.1, 19.4.3 or 19.3.6. Until you can, the project suggests taking the instance off the public internet or restricting it at the reverse proxy or firewall to trusted networks. That is not GitLab guidance.

If an affected instance was reachable

If CVE-2026-14814 applied, protected CI/CD variables that pipelines could read may have been exposed: rotate them. If CVE-2026-15723 applied (SAML and LDAP auto-linking both on), review LDAP-backed accounts for sign-ins you do not recognize.

Sources

Before you run it

  • The fix. Only 19.5.1, 19.4.3 and 19.3.6 are a full fix for the seven flaws. The backports of the 21 October release to 19.2.9, 19.1.9, 19.0.10 and 18.11.13 carry only the regular-expression fix, so 19.2.9 is current for that flaw and still exposed to CVE-2026-15723 and CVE-2026-112212.
  • Each flaw is judged on its own ranges. Being current for one says nothing about another, and the two regular-expression flaws (CVE-2026-97229, CVE-2026-110264) are in the Ruby checker, so run both.
  • The edition matters. CVE-2026-81839 and CVE-2026-96893 affect Enterprise Edition only. The script reads the edition from the package or image marker, the manifest or the presence of GitLab's ee directory. When it cannot, it raises those flaws as warnings instead of skipping them.
  • Some inputs are second-hand. The start of the affected range for CVE-2026-112212 (18.3) comes from write-ups of GitLab's advisory, not the CVE record. The Medium and Low flaws of the two releases are not checked, and there is no hunt, because GitLab published no indicators.

The Security Patches software and this documentation are dedicated to the public domain under CC0 1.0 Universal. Other pages on privacysafe.app/docs are CC BY-SA 4.0 unless the page says otherwise.

Edit this page on Codeberg

The PrivacySafe Ecosystem

Shop at Ivy Cyber

Ivy Cyber offers PrivacySafe products and services in the USA and has partnerships with 3NSoft in Canada and Kuip Limited in the European Union. Enterprise services and consulting are available at ivycyber.com

PrivacySafe Foundation is a 501(c)(3) nonprofit public charity that supports the development of the PrivacySafe applications, along with the components they rely upon: 3NWeb protocols, filesystem, documentation, and reference implementations.

PrivacySafe Foundation

Donations to PrivacySafe Foundation support education, research, documentation, and public code. Purchases from Ivy Cyber support PrivacySafe products, services, hosting, and technical support. Together, we're building a better web.