GitLab Unauthenticated RCE Flaw Exploited
GitLab CE/EE has an unauthenticated RCE flaw via crafted regex in CI/CD config, with exploitation attempts observed after disclosure, including against Alpine Linux.
Sourcecisecurity.org — open the original
What to check
- Applies to
- The 1 CVE named below. Whether you run an affected version is not assessed: check the versions the source lists.
- Exploitation
- CISA lists CVE-2026-97229 as exploited in the wild.
MS-ISAC issued an advisory on CVE-2026-97229, a vulnerability in GitLab Community Edition and Enterprise Edition stemming from insufficient regular expression validation in CI/CD configuration parsing. An unauthenticated attacker can craft a malicious regular expression to achieve arbitrary code execution on the GitLab server, potentially leading to full system compromise and unauthorized access to source code, secrets, and other sensitive data managed by the platform.
The affected versions are GitLab CE/EE 19.2 before 19.2.8, 19.3 before 19.3.5, and 19.4 before 19.4.2. Public reporting indicates active exploitation attempts following disclosure; Alpine Linux reported attempted exploitation against its own GitLab instance on October 20-21, 2026, confirming real-world targeting shortly after the vulnerability became public.
Defenders running self-hosted GitLab should prioritize patching to the fixed versions immediately, given the unauthenticated and remotely exploitable nature of the flaw combined with confirmed in-the-wild exploitation attempts. Standard mitigations include vulnerability scanning of externally exposed GitLab instances, application allowlisting, host-based intrusion detection/prevention, and least-privilege configuration of the GitLab service account to limit blast radius if exploitation succeeds.
Mentioned in this report
Detection guidance
GitLab Application Process Spawning Shell With Download or Reverse-Shell Commands
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
GitLab Omnibus ruby/puma/sidekiq processes spawning a shell that runs downloader, reverse-shell or decode-and-execute commands, consistent with post-exploitation of a GitLab RCE. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: GitLab Application Process Spawning Shell With Download or Reverse-Shell Commands
description: Detects GitLab Omnibus application processes (ruby, puma, sidekiq under
/opt/gitlab/embedded) spawning a shell that runs downloader, reverse-shell or decode-and-execute
commands. Consistent with post-exploitation of an unauthenticated GitLab RCE such
as a CI/CD configuration regex flaw.
tags:
- attack.initial-access
- attack.t1190
- attack.execution
- attack.t1059.004
logsource:
category: process_creation
product: linux
detection:
selection_parent:
ParentImage|contains: /opt/gitlab/embedded/
selection_child:
Image|endswith:
- /sh
- /bash
- /dash
selection_cmd:
CommandLine|contains:
- 'curl '
- 'wget '
- /dev/tcp/
- mkfifo
- base64 -d
- python -c
- python3 -c
- perl -e
condition: selection_parent and selection_child and selection_cmd
falsepositives:
- Custom GitLab hooks or integrations that deliberately shell out to curl from the
application
- Administrators running maintenance scripts from a GitLab console session
level: high
id: 0705cde1-bf8c-5ae3-a572-69aa09940b84
status: experimental
author: Vorant
references:
- https://www.cisecurity.org/advisory/a-vulnerability-in-gitlab-could-allow-for-remote-code-execution_2026-123
GitLab Application Process Spawning Reconnaissance Commands
A behavioural hunt for the technique in general, not a signature for the CVEs this report names.
GitLab ruby/puma/sidekiq processes directly spawning host reconnaissance utilities such as whoami, id or uname, which is not normal application behaviour and suggests code execution on the server. Auto-generated starting point — validate and tune in your environment before deploying. IOC matches can false-positive on shared infrastructure and decay as adversary infrastructure rotates.
title: GitLab Application Process Spawning Reconnaissance Commands
description: Detects GitLab Omnibus application processes (ruby, puma, sidekiq under
/opt/gitlab/embedded) directly launching host reconnaissance utilities. Typical
first-stage activity after exploiting a public-facing GitLab RCE.
tags:
- attack.initial-access
- attack.t1190
- attack.discovery
- attack.t1033
logsource:
category: process_creation
product: linux
detection:
selection:
ParentImage|contains: /opt/gitlab/embedded/
Image|endswith:
- /whoami
- /id
- /uname
- /ifconfig
- /hostname
condition: selection
falsepositives:
- Diagnostic or health-check scripts invoked by the GitLab application that call hostname
or uname
level: medium
id: 198d9f64-5a04-58c1-8509-35d61a3df239
status: experimental
author: Vorant
references:
- https://www.cisecurity.org/advisory/a-vulnerability-in-gitlab-could-allow-for-remote-code-execution_2026-123
Behavioural rules are generated from public reporting — validate in your environment before deploying.
Source reporting: https://www.cisecurity.org/advisory/a-vulnerability-in-gitlab-could-allow-for-remote-code-execution_2026-123
Free public brief. The detections with Splunk SPL already written (plus Elastic and KQL where they apply) are in the app with a free account, no card. Slack alerts on the vendors you run come with the paid plans, and a new account gets three days of them.
What this brief leaves out
This page is the free tier: the write-up, the severity, the names. In the app the same report carries its detections (Splunk SPL already written, plus Elastic and Microsoft KQL where they apply) and live profiles of the CVEs it names. The paid plans add the security research and news reporting the free tier leaves out.
It sits in a corpus of 16,433 reports from 149 sources, 661 of them written in the last seven days, and it grows through the day.
A new account starts with three days of all of it, no card, then keeps the government and CERT reporting free. Slack alerts are a paid-plan feature: name the vendors you run and Slack hears about the reports that touch them, not the rest of the week's. Nothing is charged unless you subscribe.
Create a free account What it costs