What's Happening?
On October 20 and 21, an attacker attempted to exploit a critical GitLab vulnerability, CVE-2026-97229, on an instance of GitLab. This occurred approximately one week after a fix for the vulnerability was released. The vulnerability, rated with a CVSS
score of 10.0, resides in how GitLab evaluates regular expressions within its CI configuration, stemming from a bug in the Onigmo regular expression engine bundled with Ruby. The attacker, using a newly registered account, sent crafted CI configurations that caused GitLab worker processes to crash multiple times. Although there is no definitive evidence that the attacker successfully ran code on the server, the instance was treated as compromised and subsequently rebuilt from scratch as a precautionary measure. The incident timeline indicates that the affected instance was running an older version (19.3.4) and had not yet incorporated the October 12 fix, which was a set of patches to Ruby applied in GitLab's official packages.
Why It's Important?
This incident highlights the critical importance of timely software updates and the potential risks associated with running outdated versions, especially for platforms handling sensitive development and operational data. A successful exploitation of CVE-2026-97229 could have led to severe consequences, including the exposure of user email addresses, names, IP addresses, password hashes, 2FA secrets, CI/CD variables, runner tokens, webhook credentials, and private repositories. The fact that the attacker downloaded the GitLab container image suggests an attempt to fine-tune the exploit for the specific build, indicating a sophisticated approach. For organizations relying on GitLab for their DevSecOps pipelines, such vulnerabilities can disrupt operations, compromise intellectual property, and erode trust. The incident also underscores a crucial detail: simply upgrading GitLab might not be sufficient if the instance uses a custom Ruby installation rather than GitLab's official packages, as the fix was in the Ruby patch itself.
What's Next?
Following the incident, the affected GitLab instance was rebuilt, and all user passwords were reset, requiring users to set new ones upon its reopening. The instance is currently undergoing testing before being made publicly available again. Users who had used the same password for their GitLab account on other services have been advised to change those passwords immediately. For other GitLab users, particularly those running self-managed instances or using custom Ruby installations, the key takeaway is to ensure that their Ruby versions are updated to 3.3.13, 3.4.12, 4.0.9, or later, as these versions include the necessary fix for the Onigmo bug. The incident also prompts a review of logging and monitoring capabilities, as the lack of outbound network connection logs and the loss of some background job logs hindered a definitive assessment of the attack's success.
Beyond the Headlines
This event extends beyond a typical security breach, revealing deeper implications for software supply chain security and the complexities of managing dependencies. The vulnerability's root cause in a third-party component (Onigmo, a Ruby regular expression engine) illustrates how a flaw in one part of the software stack can have cascading effects on widely used platforms like GitLab. It emphasizes the need for comprehensive vulnerability management that includes not only the primary application but also all its underlying libraries and dependencies. Furthermore, the incident highlights the challenge of ensuring that security patches are effectively deployed across diverse deployment environments, especially when users customize their setups. The attacker's method of probing and attempting to tailor the exploit also points to the evolving sophistication of cyber threats, requiring organizations to adopt proactive and multi-layered security strategies, including robust incident response plans and continuous monitoring.













