Skip to content
eastbaycyber

CVE-2026-97229: Critical Unauthenticated GitLab RCE

CVSS · Critical
10.0
In CISA KEV
Yes
Published
Nov 6
Patch SLA & TriageVector: Network
Immediate (BOD 22-01 due 2026-11-01)

Active exploitation confirmed in CISA KEV.

Exposure:
Control:
CVSS v3.1 Blast RadiusCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
Decode Vector & Sub-Scores →
CVE explainers 11 min read
Security Research Desk Source-checked
Auto-checked against the official CVE record · Human-reviewed after publishing · Updated 2026-11-06
⚠
CISA Known Exploited Vulnerability

Active exploitation confirmed in the wild. CISA added this to the KEV catalog on 2026-10-29. Federal agencies must patch by 2026-11-01.

Everything CISA added on 2026-10-29

▲ Escalation ViewOne CVE, briefed at three altitudes — skim the Brief, weigh the Impact, or work the Runbook. The way a SOC actually reads it.
CISOBrief · 30-second brief

TL;DR - CVE-2026-97229 is a CVSS 10.0 unauthenticated RCE in self-managed GitLab CE and EE. - Versions before 19.2.8, 19.3.5, and 19.4.2 are affected. - CISA KEV confirms exploitation in the wild. Patch immediately and investigate for compromise.

CVE-2026-97229 is a critical GitLab vulnerability affecting self-managed Community Edition (CE) and Enterprise Edition (EE). The unauthenticated GitLab RCE can allow remote code execution through specially crafted CI/CD regular-expression processing. CISA lists the vulnerability in its Known Exploited Vulnerabilities Catalog, so organizations should patch urgently and investigate potentially exposed systems.

AnalystImpact · assess the risk

Are You Affected?

CVE-2026-97229 affects self-managed GitLab CE and EE. The vulnerability involves insufficient validation of specially crafted regular expressions processed during CI/CD configuration handling. Under certain conditions, an unauthenticated attacker can trigger arbitrary code execution on the GitLab server.

Field Details
CVE ID CVE-2026-97229
Product GitLab Community Edition and Enterprise Edition
Vulnerability type Integer overflow or wraparound, CWE-190
CVSS 10.0 Critical
Attack vector Network
Attack complexity Low
Authentication required None
User interaction None
Scope Changed
Patch available Yes
Exploitation status Confirmed in the wild through CISA KEV inclusion

Use the following version ranges to determine exposure:

GitLab release branch Affected versions Fixed version
19.2 19.2 before 19.2.8 19.2.8
19.3 19.3 before 19.3.5 19.3.5
19.4 19.4 before 19.4.2 19.4.2

Installations on versions earlier than the listed branches should be assessed against the vendor’s current supported-release guidance. The affected ranges documented for this CVE are the 19.2, 19.3, and 19.4 branches shown above.

Do not assume an instance is safe merely because it is not internet-facing. GitLab commonly stores source code, deployment credentials, CI/CD variables, access tokens, runner registration data, and webhook secrets.

Self-managed administrators should inventory every GitLab installation, including standalone instances, high-availability deployments, disaster-recovery environments, container images, and test systems. If asset inventory is incomplete, treat unknown GitLab installations as potentially affected until their exact versions are verified.

For related security terminology, see our incident response plan glossary before beginning a formal investigation.

The Fix, If You’re in a Hurry

Upgrade immediately to the applicable fixed release:

  • GitLab 19.2.x: upgrade to 19.2.8 or later.
  • GitLab 19.3.x: upgrade to 19.3.5 or later.
  • GitLab 19.4.x: upgrade to 19.4.2 or later.

GitLab’s critical patch release was issued on October 12, 2026. The vendor recommends that self-managed installations upgrade without waiting for a normal maintenance cycle. Use the official GitLab package and upgrade documentation for your operating system, deployment method, and topology.

For Omnibus GitLab installations, a representative upgrade sequence is:

sudo apt-get update
sudo apt-get install gitlab-ee=19.4.2-ee.0
sudo gitlab-ctl reconfigure
sudo gitlab-ctl restart
sudo gitlab-rake gitlab:check SANITIZE=true

For Community Edition, use the corresponding gitlab-ce package. The exact package suffix and repository configuration vary by distribution and GitLab edition, so confirm the package version available in your configured GitLab repository before executing the change. Containerized deployments should update the image tag to the applicable fixed release and recreate the application containers according to the deployment documentation.

If an immediate upgrade is not possible, restrict access to the GitLab service using network controls, remove unnecessary internet exposure, and allow access only from trusted administrative and development networks. These controls are temporary compensating measures, not a substitute for patching. Because the vulnerability is unauthenticated and actively exploited, do not rely on authentication policy changes alone.

Technical Notes

Before upgrading, record the installed version and deployment type:

sudo gitlab-rake gitlab:env:info
sudo dpkg-query -W gitlab-ee 2>/dev/null || sudo rpm -q gitlab-ee
sudo dpkg-query -W gitlab-ce 2>/dev/null || sudo rpm -q gitlab-ce

After the upgrade, verify the running version and service health:

sudo gitlab-rake gitlab:env:info
sudo gitlab-ctl status
sudo gitlab-rake gitlab:check SANITIZE=true

Do not destroy the original host, logs, or container layers before determining whether exploitation occurred. If there are indicators of compromise, preserve evidence and coordinate the upgrade with incident response personnel.

Analyst’s Take: Patch first, then investigate from preserved evidence. CISA KEV establishes exploitation in the wild, while the public Rapid7 research shows technical reproduction against an unpatched 19.4.1 image; neither source provides a complete account of activity against every deployment.

How This Vulnerability Works

CVE-2026-97229 is classified as an integer overflow or wraparound vulnerability under CWE-190. The reported root cause is insufficient validation of specially crafted regular expressions handled by GitLab’s CI/CD regular-expression compiler or related configuration-processing logic.

At a high level, the attack path involves introducing a malicious CI/CD configuration containing a specially crafted regular expression and causing GitLab to process it. Under vulnerable conditions, an integer calculation can overflow or wrap around, allowing validation or compilation logic to behave unsafely. The resulting condition can enable attacker-controlled code execution on the GitLab server.

The precise exploit mechanics should be taken from GitLab’s advisory and the technical research referenced below rather than inferred from the CVSS vector alone. The operational consequence is clear: successful exploitation can provide control of the GitLab application context and potentially the underlying host, depending on deployment permissions and local hardening.

The lack of authentication and user interaction is especially important. A victim does not need to approve a project change or open a malicious file for exploitation to matter. An exposed self-managed GitLab instance may therefore be attacked directly over the network.

Once code execution is obtained, attackers may target repositories, CI/CD variables, runners, access tokens, deployment keys, cloud credentials, and other systems reachable from the GitLab environment.

Technical Notes

The affected functionality is associated with CI/CD configuration processing and regular-expression handling. Defenders should pay particular attention to recently changed .gitlab-ci.yml files, pipeline definitions, project settings, and unusual configuration changes preceding suspicious server activity.

The vulnerability is not described as a simple client-side issue. Patching the browser, Git client, or runner alone does not remediate the vulnerable GitLab server. The GitLab application and any redundant or standby instances must be upgraded.

Severity, Explained

The CVSS v3.1 base score is 10.0 Critical, with the following vector:

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Each component has direct operational significance:

  • AV:N, Network: The attack can be delivered over a network.
  • AC:L, Low: Exploitation does not require unusual conditions or complex preparation.
  • PR:N, None: The attacker does not need a GitLab account or existing privileges.
  • UI:N, None: No separate victim action is required.
  • S:C, Changed: Exploitation can affect security authority beyond the initially vulnerable component.
  • C:H, I:H, A:H: Confidentiality, integrity, and availability impacts can all be high.

The score does not mean that every GitLab host will automatically be fully compromised. Actual impact depends on the GitLab deployment’s privileges, network reachability, runner configuration, secrets, segmentation, and host controls. It does mean that the vulnerability’s exploit prerequisites are minimal and that the potential consequences are severe.

CISA added CVE-2026-97229 to the Known Exploited Vulnerabilities Catalog on October 29, 2026, with a remediation due date of November 1, 2026. The listed ransomware-campaign field is unknown. That field does not reduce the urgency: KEV inclusion confirms exploitation in the wild even though no named ransomware campaign has been identified.

Is It Being Exploited?

Yes. CVE-2026-97229 is listed in the CISA Known Exploited Vulnerabilities Catalog. That designation is the basis for stating that exploitation has been confirmed in the wild. Organizations should therefore treat exposed vulnerable GitLab instances as potentially targeted, not merely theoretically exploitable.

No named ransomware campaign is identified in the available information. CISA records known ransomware use as unknown. Administrators should avoid conflating the absence of a named campaign with the absence of attacker activity. Exploitation may support credential theft, source-code theft, persistence, supply-chain compromise, or access to connected environments without producing a ransomware event.

Public technical exploit research is also available. The NVD record references Rapid7 Metasploit Framework pull request 22017, and Rapid7 reported reproducing arbitrary code execution against an unpatched GitLab CE 19.4.1 image while the same input did not work against patched 19.4.2. This establishes a public technical reproduction and exploit reference.

The available evidence does not establish that a fully weaponized Metasploit module was merged or released, so defenders should describe the status as public exploit research or a PoC reference rather than claim a released module without verification.

ResponderRunbook · act now

Detecting It in Your Environment

Start with exposure validation. Inventory GitLab versions across production, staging, development, backup, and disaster-recovery environments. Then review GitLab audit events, project and repository changes, pipeline histories, runner activity, administrator actions, and host telemetry for the period beginning before the patch release and extending through remediation.

Prioritize evidence involving unauthenticated or unexpected activity, new or modified CI/CD configurations, unusual regular expressions, pipeline executions outside normal schedules, changes to protected branches, runner registration, token creation, and outbound connections from GitLab hosts.

A successful exploit may not leave a single distinctive application-log message, so detection should correlate application, operating-system, network, identity, and cloud telemetry.

Technical Notes

The following searches are starting points, not authoritative signatures. Field names vary by GitLab version, logging format, reverse proxy, and SIEM.

Search GitLab and reverse-proxy logs for unexpected requests to pipeline and CI configuration paths, especially requests followed by process creation or outbound connections:

sudo zgrep -hEi \
  'POST .*(pipeline|pipelines|ci|repository|graphql)|/api/v[0-9]+/.*(pipeline|trigger)' \
  /var/log/gitlab/nginx/access.log* \
  /var/log/nginx/access.log* 2>/dev/null

A generic SIEM query can correlate suspicious GitLab HTTP activity with host process execution:

(service="gitlab" OR process_name IN ("puma", "gitlab-workhorse", "sidekiq"))
AND (
  http_method="POST"
  AND url_path MATCHES "/(api/|group/.*/-/pipelines|.*/-/pipelines)"
)
AND (
  child_process IS NOT NULL
  OR destination_category="newly_observed"
  OR destination_port IN (80, 443, 8080, 8443)
)

Review GitLab application logs for pipeline or CI configuration events around suspicious timestamps:

sudo grep -RniE \
  'pipeline|ci_config|\.gitlab-ci\.yml|regex|regexp|runner|token|project.*updated' \
  /var/log/gitlab/gitlab-rails/ \
  /var/log/gitlab/sidekiq/ \
  /var/log/gitlab/gitlab-workhorse/ 2>/dev/null

On the GitLab host, investigate processes and network connections that do not match the expected service baseline:

ps auxww --forest
sudo ss -plant
sudo find /tmp /var/tmp /dev/shm -xdev -type f -mtime -14 -ls
sudo journalctl --since "2026-10-01" --no-pager

Look for GitLab service processes spawning shells, interpreters, download tools, archive utilities, or credential-access tooling. Examples include unexpected children such as sh, bash, curl, wget, python, perl, or ruby. These process names are not proof of exploitation because legitimate administrative and CI/CD activity can use some of them; correlate with parent process, user, command line, timing, and network destination.

Review repository and CI/CD changes for unauthorized modifications:

git log --all --since="2026-10-01" \
  -- .gitlab-ci.yml .gitlab/*.yml

git diff <known-good-commit>..<suspicious-commit> -- \
  .gitlab-ci.yml .gitlab/*.yml

Also examine newly created or rotated personal access tokens, project access tokens, deploy keys, webhook secrets, runner registrations, protected-variable changes, and administrator accounts. If centralized GitLab audit events are available, export and preserve them before log retention removes relevant records.

Incident Response and Credential Rotation

If logs, process activity, or configuration changes suggest exploitation, isolate the affected GitLab host as appropriate while preserving evidence. Avoid deleting containers, rebuilding hosts, or rotating logs before collecting relevant artifacts.

Review the surrounding environment, including:

  • GitLab repositories and protected branches.
  • CI/CD runners and runner registration tokens.
  • Personal, project, and group access tokens.
  • Deployment keys and SSH keys.
  • Cloud credentials stored in CI/CD variables.
  • Webhooks and integrations.
  • Connected cloud accounts and deployment systems.
  • Administrator and service accounts.

After patching, rotate credentials that may have been accessible from the GitLab host or its runners. Prioritize credentials with broad permissions or access to production systems.

For additional incident-response planning, see the incident response plan reference.

References and Further Reading

The primary references for this issue are:

Organizations subject to CISA requirements should also review applicable BOD 26-04 guidance and relevant forensic triage requirements. The KEV due date for this CVE was November 1, 2026, so organizations that have not remediated should document the exception, apply compensating controls immediately, and escalate the risk.

Patch affected self-managed GitLab installations first, using 19.2.8, 19.3.5, or 19.4.2, as applicable. Then use preserved logs and host telemetry to determine whether credentials, runners, repositories, or connected systems require containment and rotation.

This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.

Last verified: 2026-11-06

Disclaimer: This article may contain affiliate links. We earn a commission on qualifying purchases at no extra cost to you.