CUTSIGNcutting for sign — daily OSINT threat read
AI-generated draft, unreviewed. Version 1, written by a model from the stored public sources on 2026-10-29; hype score 0. It is regenerated when the evidence changes and is published as a verdict card under /cards/ once it crosses the publish bar. Status: draft.

GitLab Onigmo RCE: attempted exploitation of CVE-2026-97229 seen at Alpine Linux; patch GitLab and Ruby

Patch now + Hunt / IRP1confidence: mediumre-issue of card gitlab-onigmo-2026

An attacker tried to exploit CVE-2026-97229, a CVSS 10.0 GitLab flaw in the bundled Onigmo regex engine, against Alpine Linux's GitLab server. Alpine found no proof of code execution but could not rule it out. Today: confirm every self-managed GitLab is on a fixed release, patch Ruby on self-compiled or custom-Ruby installs, and hunt for crashes and unexpected child processes since 20 October.

Triage: Exploitation was attempted against a public GitLab server after the fix shipped, and the vendor-rated CVSS is 10.0 [S1].

All three sources are secondary reporting (The Hacker News) relaying GitLab, Ruby and Alpine statements. No GitLab advisory, Ruby advisory or CISA KEV entry is among the numbered sources.

Changed since version 0

What happened

Timeline

2026-10-20 to 2026-10-21Crafted CI configurations sent to Alpine Linux's GitLab server; workers crash and 502 errors follow S1
2026-10-21Newest GitLab branch releases dated (19.2.9, 19.1.9, 19.0.10, 18.11.13) S1
2026-10-22GitLab fix for CVE-2026-110264 reported; no exploitation or KEV listing reported at that time S2
2026-10-26Ruby 4.0.9, 3.4.12 and 3.3.13 reported as fixing the underlying Onigmo bugs; none of the four CVEs in KEV as of 23 October S3
2026-10-29Alpine Linux attempted-exploitation account reported S1

Detect

Ruby crash reports pointing to Onigmo · GitLab application logs / Ruby crash reports

index=* ("[BUG]" OR "Segmentation fault" OR "SIGSEGV") (onig OR regcomp OR regparse OR "Regexp") (puma OR sidekiq) | stats count min(_time) as first max(_time) as last by host, source
FROM logs-* | WHERE (message LIKE "*[BUG]*" OR message LIKE "*Segmentation fault*" OR message LIKE "*SIGSEGV*") AND (message LIKE "*onig*" OR message LIKE "*regcomp*" OR message LIKE "*regparse*" OR message LIKE "*Regexp*") AND (message LIKE "*puma*" OR message LIKE "*sidekiq*") | STATS count = COUNT(*), first = MIN(@timestamp), last = MAX(@timestamp) BY host.name, log.file.path

A hit means: A GitLab worker crashed inside regex compilation. This matches the crash pattern Alpine saw. Treat it as an exploitation attempt until verified.

Unexpected child processes of Puma or Sidekiq · Process events / EDR on GitLab servers

index=* (parent_process_name="*puma*" OR parent_process_name="*sidekiq*") (process_name=sh OR process_name=bash OR process_name=dash OR process_name=curl OR process_name=wget OR process_name=nc OR process_name=python* OR process_name=perl) | stats count min(_time) as first max(_time) as last values(process) as cmdlines by host, parent_process_name, process_name
FROM logs-* | WHERE (process.parent.name LIKE "*puma*" OR process.parent.name LIKE "*sidekiq*") AND (process.name IN ("sh", "bash", "dash", "curl", "wget", "nc", "perl") OR process.name LIKE "python*") | STATS count = COUNT(*), first = MIN(@timestamp), last = MAX(@timestamp), cmdlines = VALUES(process.command_line) BY host.name, process.parent.name, process.name

A hit means: A GitLab web or job worker spawned a shell or a network tool. If the crafted-regex attempt succeeded, this is the likely follow-on [S1]. Escalate to IR.

GraphQL ciLint requests and CI regexp warnings · GitLab application logs (GraphQL / production logs)

index=* ("ciLint" OR "CiLint" OR "regexp" AND "warning") | stats count min(_time) as first max(_time) as last by host, remote_ip
FROM logs-* | WHERE message LIKE "*ciLint*" OR message LIKE "*CiLint*" OR (message LIKE "*regexp*" AND message LIKE "*warning*") | STATS count = COUNT(*), first = MIN(@timestamp), last = MAX(@timestamp) BY host.name, source.ip

A hit means: CI configurations were linted or carried regexp warnings. Bursts from one source, especially before worker crashes, fit the CI-regex delivery Alpine described.

Verify

Scope

Affected

Only if

Not affected if

Fixed in: GitLab 19.3.6, 19.4.2, 19.2.9, 19.1.9, 19.0.10, 18.11.13; plus Ruby 3.3.13, 3.4.12 or 4.0.9 for self-compiled and custom-Ruby installs [S1][S3]

Enumerate

Contain

Eradicate

Recover

Re-enter the loop when

Debrief

Detection coverage — checked automatically

CategorySourceStatus
VendorImpacted vendor / CERT advisorynothing found — no vendor or CERT page among the thread sources; secondary reporting only
GovernmentCISA KEV · CVE-2026-110264nothing found — not in the catalog
GovernmentCISA KEV · CVE-2026-97229published — listed 2026-10-29, federal due 2026-11-01
ReferenceNVD · CVE-2026-110264published — published 2026-10-22, CVSS 3.1 10
ReferenceNVD · CVE-2026-97229published — published 2026-10-13, CVSS 3.1 10
VM scannersQualys · CVE-2026-110264nothing found — no ThreatPROTECT or Security Blog post names it; the QID knowledge base needs a login
VM scannersQualys · CVE-2026-97229nothing found — no ThreatPROTECT or Security Blog post names it; the QID knowledge base needs a login
VM scannersRapid7 · CVE-2026-110264published — InsightVM coverage stated
VM scannersRapid7 · CVE-2026-97229published — InsightVM coverage stated · 1 Metasploit module (not linked)
VM scannersTenable · CVE-2026-110264check failed — plugin search page did not render a result list
VM scannersTenable · CVE-2026-97229published — 28 plugins: 365109 FreeBSD : Gitlab -- vulnerabilities (5518664d-c652-11f1-b273-2cf05da270f3); 366188 GitLab 19.2 < 19.2.8 / 19.3 < 19.3.5 / 19.4 < 19.4.2 (CVE-2026-97229); 377599 RHEL 9 : ruby:3.3 (RHSA-2026:96068); 377749 AlmaLinux 9 : ruby (ALSA-2026:96067); …
EDR / endpoint VMCrowdStrike blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMMicrosoft Security blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMSentinelOne blognothing found — no post names it among the feed's 10 newest items
EDR / endpoint VMSentinelOne Labsnothing found — no post names it among the feed's 10 newest items
WAF / edgeAkamai blognothing found — no post names it among the feed's 1183 newest items
WAF / edgeCloudflare WAF managed-ruleset changelognothing found — no post names it among the feed's 139 newest items
Cloud / containerWiz blognothing found — no post names it among the feed's 717 newest items
Linux distro errataDebian tracker · CVE-2026-110264published — tracker entry with fixed versions
Linux distro errataDebian tracker · CVE-2026-97229published — tracker entry with fixed versions
Linux distro errataRed Hat · CVE-2026-110264published — Critical; errata RHSA-2026:96233, RHSA-2026:96235, RHSA-2026:96067, RHSA-2026:96068, RHSA-2026:96120, RHSA-2026:95655
Linux distro errataRed Hat · CVE-2026-97229published — Critical; errata RHSA-2026:96233, RHSA-2026:96235, RHSA-2026:96067, RHSA-2026:96068, RHSA-2026:96120, RHSA-2026:95655
IDS / researchCisco Talos blognothing found — no post names it among the feed's 15 newest items
IDS / researchEmerging Threats open · CVE-2026-110264nothing found — no open rule names it (exploit, web_server, web_specific_apps sets)
IDS / researchEmerging Threats open · CVE-2026-97229nothing found — no open rule names it (exploit, web_server, web_specific_apps sets)
Detection contentElastic detection rulespublished — 26 files name GitLab: rules/linux/persistence_dbus_service_creation.toml, rules/cross-platform/defense_evasion_masquerading_space_after_filename.toml, rules_building_block/discovery_process_discovery_via_builtin_tools.toml, rules/linux/persistence_systemd_service_creation.toml
Detection contentElastic Security Labsnothing found — no post names it among the feed's 102 newest items
Detection contentSigmaHQ rulespublished — 3 files name GitLab: rules/windows/process_creation/proc_creation_win_pua_memprocfs.yml, rules/windows/process_creation/proc_creation_win_github_self_hosted_runner.yml, rules/windows/process_creation/proc_creation_win_powershell_console_history_file_access.yml
Detection contentSplunk ESCUpublished — 1 file names GitLab: detections/endpoint/powershell_download_from_code_hosting_service.yml
CommunityNuclei template · CVE-2026-110264nothing found — no template under http/cves
CommunityNuclei template · CVE-2026-97229published — template in nuclei-templates (main)
MSSP / IR firmsArctic Wolf blognothing found — no post names it among the feed's 10 newest items
MSSP / IR firmsHuntress blognothing found — no post names it among the feed's 754 newest items
MSSP / IR firmsRapid7 blogpublished — Rapid7 Analysis: GitLab CI/CD Regex Integer Overflow (CVE-2026-97229)
MSSP / IR firmsSophos threat researchnothing found — no post names it among the feed's 15 newest items
ResearchUnit 42nothing found — no post names it among the feed's 15 newest items

Checked automatically 2026-11-10 05:36Z from public sources: 15 published, 20 nothing found, 0 not machine-checkable, 1 failed. "Nothing found" means the public source answered and had nothing, as of that moment; a feed covers only its newest posts. Re-checked daily.

What a person would still look up (4)
Vulnerability scannerWhether checks exist for CVE-2026-97229 and CVE-2026-110264, and whether they inspect the Ruby version on self-compiled installs
EDRWhether shells or network tools spawned by Puma or Sidekiq are alerted on GitLab hosts
SIEMWhether GitLab application logs and Ruby crash reports are ingested and parsed, so GitLab's Sigma rules can run
WAF / reverse proxyWhether GraphQL ciLint requests and 502 bursts on GitLab are logged and alertable

Exposure queries — generated automatically

Where each CVE comes from: CVE-2026-97229 — Ruby 4.0.9, 3.4.12 and 3.3.13 fix Onigmo regex bugs behind four critical GitLab RCE CVEs; CVE-2026-110264 — Ruby 4.0.9, 3.4.12 and 3.3.13 fix Onigmo regex bugs behind four critical GitLab RCE CVEs. A product row answers "is the software from that story reachable from the internet", not "is this card about that software".

shodan · cve · CVE-2026-97229

vuln:CVE-2026-97229

open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.

203services internet-wide on Shodan · 2026-11-10▲ 0 on 2026-10-30 (+203) · 198 on 2026-11-09 (+5 +3%)

shodan · cve · CVE-2026-110264

vuln:CVE-2026-110264

open · Shodan tags a service with a CVE from its banner version; a paid-tier filter. Exact for this CVE, blind to a host Shodan has not fingerprinted.

0match this spelling on Shodan · 2026-11-10 — Shodan has tagged no banner with this CVE yet; its tagging follows its own version fingerprinting, not the advisory▬ 0 on 2026-10-30 (+0) · 0 on 2026-11-09 (+0)

shodan · cpe · gitlab:gitlab

cpe:"cpe:/a:gitlab:gitlab"

open · Every Gitlab service Shodan fingerprinted, any version (CPE 2.2 form of cpe:2.3:a:gitlab:gitlab). Affected per NVD: >= 19.2.0 < 19.2.8; >= 19.3.0 < 19.3.5; >= 19.4.0 < 19.4.2.

50,996services internet-wide on Shodan · 2026-11-10▲ 48,638 on 2026-10-30 (+2,358 +5%) · 50,917 on 2026-11-09 (+79 +0%)

shodan · product · gitlab:gitlab

product:"Gitlab"

open · Banner product name, NVD's spelling; adjust if Shodan's differs. Affected per NVD: >= 19.2.0 < 19.2.8; >= 19.3.0 < 19.3.5; >= 19.4.0 < 19.4.2.

49,539services internet-wide on Shodan · 2026-11-10▲ 47,977 on 2026-10-30 (+1,562 +3%) · 49,484 on 2026-11-09 (+55 +0%)

censys · product · gitlab:gitlab

host.services: (software.product = "Gitlab")

Censys Platform host search, software as fingerprinted at layer 7. Affected per NVD: >= 19.2.0 < 19.2.8; >= 19.3.0 < 19.3.5; >= 19.4.0 < 19.4.2.

shodan · alias · gitlab:gitlab

http.html:"GitLab Community Edition"

open · Banner spelling suggested by the model from the card text (self-managed Community Edition pages carry this product string in the HTML); counted against Shodan before it was shown.

917,951services internet-wide on Shodan · 2026-11-10▲ 471,393 on 2026-10-30 (+446,558 +95%) · 896,232 on 2026-11-09 (+21,719 +2%)

Internet-wide count, trend

QueryFirstLatestChange
product:"Gitlab"47,977 2026-10-3049,539 2026-11-10+1,562 (+3%) over 11 days
vuln:CVE-2026-972290 2026-10-30203 2026-11-10+203 over 12 days
vuln:CVE-2026-1102640 2026-10-300 2026-11-10+0 over 12 days
cpe:"cpe:/a:gitlab:gitlab"48,638 2026-10-3050,996 2026-11-10+2,358 (+5%) over 11 days
http.html:"GitLab Community Edition"471,393 2026-10-30917,951 2026-11-10+446,558 (+95%) over 12 days
product:"Ruby"60 2026-11-0357 2026-11-09-3 (-5%) over 6 days
cpe:"cpe:/a:ruby-lang:ruby"1,657,012 2026-11-032,013,203 2026-11-09+356,191 (+21%) over 6 days

Shodan's count of matching services on the whole internet, one point a day; the scope (your ranges) is never part of it. A count moves with Shodan's crawl as much as with patching, so read the direction, not the digit.

NVD names 2 more affected products (libraries and embedders); the CVE query covers them where Shodan has fingerprinted the version.

Banner spellings: a model read 2 from the NVD names and this card's text (former and marketing names, console titles); 1 matched something on Shodan and is shown above, the rest was dropped.

Scope every query in your own tool, never in a shared document: Shodan `net:<your_ranges>`, `org:"<your_org>"` or `hostname:<your_domain>` (or a Shodan Monitor network alert, which applies the scope for you); Censys `host.ip: <your_ranges>` or `host.dns.names: <your_domain>`. Then compare the banner version with the affected range. Generated automatically 2026-11-10 05:36Z from the CVE ids and NVD's CPE configurations, each Shodan query counted against Shodan itself; re-built daily with the coverage check.

Open questions

Sources

Public OSINT only. AI-generated by the pipeline; structure follows the DAIR model from Dynamic Incident Response (Joshua Wright). Published automatically once it crosses the publish bar.