CVSS 10.0
Maximum severity rating on CVE-2026-97229 -- the highest possible CVSS score, requiring no credentials or user interaction for exploitation
0 credentials
Required to exploit CVE-2026-97229 -- any attacker with network access to a GitLab instance can trigger unauthenticated code execution
18 days
Gap between GitLab's October 12 patch release and CISA's October 29 KEV confirmation -- window in which attackers exploited unpatched organizations
3 branches
GitLab CE and EE release branches (19.2, 19.3, 19.4) each required a separate emergency patch, indicating broad version exposure across enterprise deployments

Reach 50,000+ security professionals

Sponsor a newsletter slot and put your brand in front of CISOs, engineers, and IT decision-makers.

Summarize with:

CVE-2026-97229, rated CVSS 10.0, is a maximum-severity integer overflow in GitLab's CI/CD Regular Expression Compiler that lets any unauthenticated attacker execute arbitrary code on a self-managed GitLab server with a single HTTP request. GitLab released emergency patches (19.4.2, 19.3.4, 19.2.8) on October 12, 2026; CISA added the flaw to its Known Exploited Vulnerabilities catalog on October 29, confirming active exploitation against organizations that did not update within the 17-day disclosure window.

The vulnerability lives in the regex compiler used to evaluate CI/CD pipeline conditions in .gitlab-ci.yml files. GitLab's CI/CD lint endpoint (/api/v4/ci/lint) validates YAML pipeline configurations and is publicly accessible on self-managed instances without authentication. An attacker sends a POST request to this endpoint containing a YAML snippet with a crafted regex pattern in a rules: or if: clause. A bit-width boundary value in the quantifier field causes an integer overflow when the compiler allocates a buffer for the regex automaton. The undersized buffer is then overwritten by subsequent decompilation steps, corrupting adjacent heap memory. Researchers confirmed that a suitable heap layout converts the overflow into arbitrary code execution running with the privileges of the GitLab server process.

Every self-managed GitLab CE and EE installation on versions 19.1.0 through 19.4.1 is vulnerable right now unless patched. GitLab powers source code management and CI/CD pipelines for hundreds of thousands of organizations worldwide, including defense contractors, financial institutions, and government agencies. A compromised GitLab server exposes every repository, every CI/CD secret, and every deployment pipeline hosted on that instance. CI/CD pipeline access is equivalent to production deployment access in most modern infrastructure. Organizations running unpatched GitLab should treat this as an emergency patch directive and upgrade before end of business today.

How Does the CVE-2026-97229 Exploit Work?

The CVE-2026-97229 exploit path begins at GitLab's publicly exposed CI/CD lint API and ends with arbitrary code execution on the server. The attack requires no credentials, session tokens, or prior knowledge of the GitLab configuration.

GitLab exposes an HTTP endpoint at /api/v4/ci/lint that accepts POST requests containing .gitlab-ci.yml YAML for syntax and rule validation. This endpoint is designed to help developers check pipeline configurations before committing them. On all self-managed GitLab installations, this endpoint responds to unauthenticated requests by default -- it was designed for convenience in developer tooling workflows.

The CI/CD regex compiler processes rules:if and only:variables expressions containing regular expression patterns. These patterns use a quantifier field that stores repeat counts as a fixed-width integer. When an attacker supplies a crafted regex with a quantifier value near the maximum for the integer type, the compiler adds a constant offset during automaton construction. The addition overflows the integer's capacity, wrapping the value to a small or negative number. The compiler then calls malloc() with this wrapped value, allocating a buffer far smaller than the actual automaton requires. Subsequent write operations overwrite memory beyond the buffer's boundary, corrupting adjacent heap structures.

The severity of the outcome depends on heap layout. In the best case for defenders, the process crashes with a segmentation fault. In the worst case -- which researchers have confirmed -- the overwritten region contains a heap metadata structure that can be shaped into a code-execution primitive. Successful exploitation yields a shell running as the gitlab-www user, with full read access to the GitLab database, repository storage, and CI/CD secrets.

The attack path has no prerequisite actions: one POST request to /api/v4/ci/lint is sufficient. No GitLab account, API token, or legitimate pipeline context is needed. Any internet-accessible GitLab instance is a target.

An important supply chain parallel: the MIASMA worm targeting GitHub developer repos and IDE extensions demonstrates how attackers are systematically targeting developer tooling -- GitLab CI/CD compromise follows the same pattern at the infrastructure layer.

Which GitLab Versions Are Affected by CVE-2026-97229?

CVE-2026-97229 affects GitLab Community Edition and Enterprise Edition across three active release branches. GitLab patched all three branches simultaneously on October 12, 2026. The table below shows the affected and fixed versions.

GitLab BranchAffected RangeFixed VersionStatus
19.4.x19.4.0 -- 19.4.119.4.2Patch available Oct 12, 2026
19.3.x19.3.0 -- 19.3.319.3.4Patch available Oct 12, 2026
19.2.x19.2.0 -- 19.2.719.2.8Patch available Oct 12, 2026
19.1.xAll 19.1 versionsNo fix (EOL branch)Upgrade to 19.2.8 or higher
< 19.1All older versionsNo fixUpgrade required
GitLab.comAll versionsAlready patchedNo action needed
GitLab DedicatedAll versionsAlready patchedNo action needed

GitLab 19.1 and older are outside the active support window. Organizations still running 19.1.x or older must upgrade to a supported branch (19.2.8+) rather than expect a backport. GitLab does not indicate that the flaw is limited to 19.x -- the integer overflow may affect older versions through different code paths, but those branches are unsupported.

Note on 19.3.4 vs 19.3.5: some secondary sources list the 19.3 fix as 19.3.5. This discrepancy may reflect a follow-on patch for a separate bug in 19.3.4 affecting merge request pages with the Ona integration enabled. Check the GitLab release notes for your branch before selecting a target version.

Free daily briefing

Briefings like this, every morning before 9am.

Threat intel, active CVEs, and campaign alerts, distilled for practitioners. 50,000+ subscribers. No noise.

Active Exploitation and CISA KEV Timeline

CISA's October 29 KEV addition confirms that attackers began exploiting CVE-2026-97229 against unpatched organizations within the 17-day window between GitLab's disclosure (October 12) and the KEV listing. The timeline below shows the key events.

GitLab disclosed CVE-2026-97229 alongside the patch release on October 12, 2026, following a responsible disclosure process through its HackerOne bug bounty program. The researcher assigned the handle 'joaxcar' reported the flaw. GitLab's disclosure did not indicate in-the-wild exploitation at the time of release -- a pattern consistent with attackers reverse-engineering the patch to develop an exploit after public disclosure rather than before it.

The 17-day exploitation window aligns with the typical attacker timeline for CVE exploitation after a critical patch is released: patch analysis to working exploit generally takes between 48 hours and three weeks for a critical-rated flaw with a clear primitive (integer overflow into heap corruption). The CISA KEV confirmation on October 29 indicates that exploit tooling matured and was deployed against production targets within that window.

No specific threat actor attribution or confirmed victim disclosure has been made public as of October 30, 2026. CISA's KEV entry does not name the exploitation actor, and GitLab's advisory notes that the exploitation evidence was provided by external researchers. The absence of attribution does not reduce urgency -- KEV confirmation is the definitive signal for enterprise patch prioritization.

Key defensive implication: organizations that treated the October 12 GitLab release as routine maintenance rather than an emergency patch may have been compromised during the window. Any organization running 19.1.0 through 19.4.1 that has not upgraded should assume potential compromise and perform forensic triage alongside upgrading.

The Storm-0940 ARTEX AI supply chain attack on ConnectWise M365 demonstrates that sophisticated actors are specifically targeting developer and DevOps infrastructure -- GitLab is a high-value target in the same category.

“CISA's Known Exploited Vulnerabilities catalog is the clearest signal in the industry that a vulnerability has moved from theoretical to operational. A KEV addition on a CVSS 10.0 unauthenticated RCE is an emergency patch directive, full stop.”

CISA Known Exploited Vulnerabilities Catalog, October 29, 2026

Indicators of Compromise for GitLab CVE-2026-97229

No confirmed attacker IP addresses, domains, or file hashes have been publicly released for CVE-2026-97229 exploitation as of October 30, 2026. The indicators below are behavioral -- derived from the known exploit path and post-exploitation patterns typical of web process RCE on GitLab servers. Use these for hunting in SIEM and EDR data.

Review GitLab production logs at /var/log/gitlab/gitlab-rails/production.log for POST requests to /api/v4/ci/lint without authentication headers. Legitimate external uses of the lint API include GitLab CI/CD editor and developer tooling -- baseline this traffic before treating all unauthenticated lint requests as malicious. Anomalous indicators include: requests from unfamiliar source IPs, abnormally large request bodies, or requests at unusual hours relative to your developer workforce.

Post-exploitation artifacts: watch for the gitlab-www user creating files in locations it does not normally write, adding SSH keys to /var/opt/gitlab/.ssh/authorized_keys or /home/git/.ssh/authorized_keys, or spawning processes outside the normal GitLab process tree (puma, sidekiq, gitlab-workhorse). Any outbound network connection initiated by a GitLab Ruby worker process to a non-GitLab destination warrants immediate investigation.

Subscribe to unlock Indicators of Compromise

Free subscribers unlock full IOC lists, Sigma detection rules, remediation steps, and every daily briefing.

Sigma Detection Rules for GitLab CVE-2026-97229

These two rules cover the primary exploitation indicator (unauthenticated CI/CD lint API access from external IPs) and post-exploitation detection (GitLab web process spawning a shell). Both carry experimental status; validate against your environment's log format and GitLab deployment topology before enabling automatic blocking.

Subscribe to unlock Sigma Detection Rules

Free subscribers unlock full IOC lists, Sigma detection rules, remediation steps, and every daily briefing.

Subscribe to unlock Sigma Hunt Queries

Free subscribers unlock full IOC lists, Sigma detection rules, remediation steps, and every daily briefing.

Subscribe to unlock WAF Detection Rules

Free subscribers unlock full IOC lists, Sigma detection rules, remediation steps, and every daily briefing.

How to Patch CVE-2026-97229 on Self-Managed GitLab

These steps address both the immediate upgrade requirement and interim mitigations for instances that cannot be upgraded within the next four hours. Mitigations without upgrading reduce exploitation risk but do not eliminate the vulnerability.

Apply official patch →docs.gitlab.com/releases/patches/patch-release-gitlab-19-4-2-released/

Subscribe to unlock Remediation & Mitigation steps

Free subscribers unlock full IOC lists, Sigma detection rules, remediation steps, and every daily briefing.

Why CVE-2026-97229 Matters for Your Organization

CVE-2026-97229 is not a routine web application CVE. GitLab's CI/CD platform sits at the intersection of source code, secrets, and production deployments for the organizations that run it. A single successful exploit produces an attacker foothold with access to every repository, every pipeline variable, and every deployment credential stored on that GitLab instance.

The CI/CD pipeline trust model amplifies the blast radius. In most organizations, GitLab CI/CD pipeline jobs run with elevated permissions in staging and production environments -- they deploy code, call APIs, push to registries, and access cloud infrastructure. An attacker who compromises the GitLab server process can modify pipeline YAML files to inject malicious build steps, creating a supply chain attack against every downstream environment that those pipelines deploy to. This is not theoretical: the Storm-0940 ARTEX attack on ConnectWise M365 used a similar supply chain positioning to gain multi-tenant access across downstream organizations.

The 17-day exploitation window highlights an ongoing patch prioritization failure in many organizations. GitLab released the fix with a clear CVSS 10.0 rating on October 12. Organizations that process vulnerability disclosures on a weekly or bi-weekly schedule -- rather than triaging CVSS 9.5+ unauthenticated RCE disclosures as emergency patches -- remained exposed for nearly three weeks. The CISA KEV confirmation on October 29 confirms that attackers were faster than the standard enterprise patch cadence.

GitLab self-managed deployments are increasingly common in regulated industries and defense supply chains precisely because they keep source code on-premises. That positioning also means they are frequently internet-facing without the additional WAF and network controls applied to more visible services. Any organization with an internet-facing self-managed GitLab instance running 19.1.0 through 19.4.1 should treat today as day zero for this patch.

The bottom line

GitLab CVE-2026-97229 is a CVSS 10.0 unauthenticated RCE confirmed by CISA as actively exploited against self-managed installations. One HTTP request is enough to compromise a GitLab server, steal every CI/CD secret, and poison downstream deployment pipelines. Upgrade to 19.4.2, 19.3.4, or 19.2.8 before end of business today. If you cannot patch immediately, block unauthenticated POST requests to /api/v4/ci/lint at your reverse proxy and audit production logs for exploitation indicators going back to October 12.

This analysis is generic. create a free account to score threats like this against your own stack.

Frequently asked questions

What is CVE-2026-97229?

CVE-2026-97229 is a CVSS 10.0 integer overflow in GitLab's CI/CD Regular Expression Compiler affecting GitLab Community Edition and Enterprise Edition versions 19.1 through 19.4.1. The flaw allows any unauthenticated attacker to send a single HTTP POST request to the /api/v4/ci/lint endpoint containing a specially crafted regex pattern. The integer overflow corrupts heap memory in the GitLab server process and can produce arbitrary code execution. No login, API token, or prior access to the GitLab instance is required.

How does the GitLab CI/CD regex compiler integer overflow work?

GitLab's CI/CD pipeline uses a regex compiler to evaluate expressions in `if:` and `rules:` clauses of .gitlab-ci.yml files. The CI/CD lint API endpoint (/api/v4/ci/lint) accepts YAML for validation without authentication. The integer overflow occurs when the compiler processes a crafted regex pattern containing specific bit-width boundary values in the quantifier field. The counter overflows from a maximum positive value to a negative value (or zero), causing the compiler to allocate an undersized buffer. Subsequent writes to that buffer corrupt adjacent heap memory, which an attacker can shape into a code-execution primitive against the GitLab server process.

Which GitLab versions are vulnerable?

All GitLab CE and EE versions from 19.1.0 through 19.4.1 are vulnerable. The three active release branches each received a separate fix: 19.2.x is fixed in 19.2.8, 19.3.x is fixed in 19.3.4, and 19.4.x is fixed in 19.4.2. Versions prior to 19.1 may also contain vulnerable code but are outside GitLab's support window. GitLab.com (SaaS) and GitLab Dedicated deployments were patched by GitLab directly and do not require customer action.

Am I affected if I use GitLab.com or GitLab Dedicated?

No. GitLab.com (cloud-hosted SaaS) and GitLab Dedicated (single-tenant managed service) were patched by GitLab's operations team before the public disclosure on October 12, 2026. Only self-managed GitLab CE and EE installations require action. If your organization operates its own GitLab server on-premises or in a private cloud, verify the installed version immediately and upgrade to 19.4.2, 19.3.4, or 19.2.8.

Is CVE-2026-97229 being actively exploited?

Yes. CISA added CVE-2026-97229 to its Known Exploited Vulnerabilities catalog on October 29, 2026, confirming evidence of active exploitation in the wild. GitLab disclosed the vulnerability and released patches on October 12, 2026 -- a 17-day gap during which attackers exploited unpatched self-managed installations. CISA requires US federal civilian agencies to remediate KEV entries within a defined deadline. Private sector organizations should treat KEV confirmation as equivalent to an emergency patch directive.

How do I detect if my GitLab instance has been compromised?

Review GitLab production logs (/var/log/gitlab/gitlab-rails/production.log) for POST requests to /api/v4/ci/lint from external IP addresses without a PRIVATE-TOKEN or Authorization header. Check process logs for gitlab-puma-worker or ruby processes spawning unexpected child processes (sh, bash, cmd.exe). Look for new files in /var/opt/gitlab/gitlab-rails/uploads/ or changes to /var/opt/gitlab/.ssh/authorized_keys written by the gitlab-www user. Any unauthorized SSH key added to the git user's authorized_keys file is a strong persistence indicator.

What can an attacker do after exploiting CVE-2026-97229?

After achieving code execution as the GitLab server process, an attacker can read all source code in every repository on the instance, steal CI/CD environment variables (which frequently contain API keys, cloud credentials, and deployment secrets), modify pipeline configurations to inject malicious build steps, plant backdoors in any codebase passing through CI, and export or delete the full GitLab database. In organizations where GitLab hosts production deployment pipelines, a compromised GitLab instance is equivalent to a compromised production environment. The CI/CD credential exposure risk makes this a high-value supply chain target.

Does restricting access to /api/v4/ci/lint mitigate the risk without patching?

Partially. Blocking or rate-limiting unauthenticated POST requests to /api/v4/ci/lint at the WAF or reverse proxy layer removes the primary unauthenticated attack vector documented in current exploitation. However, this endpoint may not be the only path that triggers the vulnerable regex compiler -- authenticated users or pipeline jobs could also supply crafted regex through other CI/CD configuration paths. Network-layer restriction is an interim measure; upgrading to a fixed GitLab version is the only complete remediation. GitLab's advisory lists no supported workaround that avoids upgrading.

Sources & references

  1. GitLab Critical Patch Release: 19.4.2, 19.3.4, 19.2.8
  2. CISA Adds Two Known Exploited Vulnerabilities to Catalog (October 29, 2026)
  3. BleepingComputer: GitLab warns of max severity code execution vulnerability
  4. SOC Prime: CVE-2026-97229 Critical GitLab RCE Flaw Enables Unauthenticated Code Execution
  5. watchTowr: CVE-2026-97229 GitLab CI/CD Regex Compiler Integer Overflow
Summarize with:

Free resources

25
Free download

Critical CVE Reference Card 2025–2026

25 actively exploited vulnerabilities with CVSS scores, exploit status, and patch availability. Print it, pin it, share it with your SOC team.

No spam. Unsubscribe anytime.

Free download

Ransomware Incident Response Playbook

Step-by-step 24-hour IR checklist covering detection, containment, eradication, and recovery. Built for SOC teams, IR leads, and CISOs.

No spam. Unsubscribe anytime.

Follow Decryption Digest

Daily briefings + Google Top Stories in one step.

Enter your email and we'll subscribe you to the daily briefing and add Decryption Digest to your Google Search feed at the same time.

Free. Unsubscribe anytime. Google popup confirms the Top Stories add.

Eric Bang
Author

Founder & Cybersecurity Evangelist, Decryption Digest

Cybersecurity professional with expertise in threat intelligence, vulnerability research, and enterprise security. Covers zero-days, ransomware, and nation-state operations for 50,000+ security professionals every morning.

Daily Briefing

Get briefings like this every morning

Actionable threat intelligence for working practitioners. Free. No spam. Trusted by 50,000+ SOC analysts, CISOs, and security engineers.

Unsubscribe anytime.

Mythos Brief

Anthropic's AI finds zero-days your scanners miss.