デイリー · 記事 01 · 5 分で読む
- セキュリティ
CISA、GitLabの正規表現の欠陥を悪用一覧に追加…稼働版と侵入痕跡を点検
10月29日CISA一覧更新・10月30日JST開発元原文を照合
要約・概要
CISAは10月29日、ログインなしの遠隔コード実行につながるGitLabの欠陥を悪用一覧に追加しました。修正公開は10月12日です。自前で運用するサーバーでは稼働版と侵入痕跡の両方を調べます。
自社でGitLabを運用しているなら、管理者に現在の稼働版と侵入痕跡の調査状況を聞く時です。GitLabはソースコードと自動テスト・配布の手順を管理するサービスです。米国のセキュリティ機関CISAは10月29日、CVE-2026-97229を実際の悪用が確認された欠陥の一覧KEVに追加しました。
主な事実
CISAは、CI/CD設定にある細工された正規表現が、特定の条件で未認証の人によるサーバー上のコード実行につながると説明しています。CI/CDはコード変更後のテストや配布を自動で行う手順です。一覧の配信は30日04:09:34 JSTで、最初の攻撃時刻ではありません。CISA原本一覧
GitLabは10月12日、19.4.2・19.3.5・19.2.8で修正を公開しました。GitLab.comとGitLab Dedicatedは既に修正済みと案内しています。今回新しいのは悪用一覧への追加であり、パッチの新規公開ではありません。自前の環境への反映は管理者が別に確かめます。GitLab修正案内

1. 文字の規則を読むと、なぜ命令実行につながる?
正規表現は、文字列がある形に合うかを調べる規則です。例えば「ブランチ名がreleaseで始まるか」で自動テストを選ぶ使い方が考えられます。これは正常な用途を示す架空の例で、攻撃用の規則ではありません。
GitLab内部のRubyプログラムは、利用者が与えた規則を実行用の形へ変えるコンパイルを行います。Ruby開発チームは、この段階で細工した規則が内部メモリを壊し、GitLabサーバーの遠隔コード実行に使えると説明しました。検索が遅くなるだけでなく、サーバープログラムの処理の進み方に影響する問題です。Ruby開発元の説明
整数のオーバーフローは、サイズが計算欄の上限を超えて値が崩れる問題です。3桁の欄で1000のうち000だけ残る例にたとえられますが、仕組みを示す架空の計算で、Rubyの実際の桁数や攻撃入力ではありません。必要なサイズを誤って扱うとメモリの境界を越え得るため、今回はそこからサーバー上の実行へつながる問題です。
%% 規則の入力からサーバー実行の危険へ · GitLab・Ruby公式説明の範囲
flowchart TD
A["外部から細工した規則"] --> B["影響するRubyがコンパイル<br/>内部メモリが壊れる"]
B --> C["条件がそろうとコード実行<br/>サーバー側の権限で被害"]任意コード実行は、攻撃者が選ぶ作業をサーバーにさせられるという意味です。そのアカウントで読んだり変えたりできる資料が危険になり得ますが、全サーバーの管理者権限取得や情報流出が示されたわけではありません。
猫と一緒に読み解く Q&A
- 猫の研究員
ログインを必須にしておけば防げる?
ポケットノート公式項目には認証なしで到達する条件が書かれているよ。ログインだけを守りの根拠にせず、管理者が影響版と外へ開かれた処理経路を調べる必要がある。この条件の説明が、自分の環境で攻撃が起きた証拠になるわけではないよ。
2. GitLabとRuby、それぞれの修正の場所
GitLabは配布するRubyに修正を入れました。Rubyプロジェクトは10月23日、関連する4件の修正をすべて含む4.0.9・3.4.12・3.3.13を別に公開しました。ホストに別途入れたRubyだけを変えても、GitLabが実際に使うRubyが変わった根拠にはなりません。
| GitLab系列 | このCVEの影響範囲 | 最初に修正を含む版 |
|---|---|---|
| 19.2 | 19.2から19.2.8未満 | 19.2.8 |
| 19.3 | 19.3から19.3.5未満 | 19.3.5 |
| 19.4 | 19.4から19.4.2未満 | 19.4.2 |
- GitLab系列
19.2
- このCVEの影響範囲
- 19.2から19.2.8未満
- 最初に修正を含む版
- 19.2.8
- GitLab系列
19.3
- このCVEの影響範囲
- 19.3から19.3.5未満
- 最初に修正を含む版
- 19.3.5
- GitLab系列
19.4
- このCVEの影響範囲
- 19.4から19.4.2未満
- 最初に修正を含む版
- 19.4.2
表はこの欠陥の初回修正版で、現在の最新推奨版一覧ではありません。管理者はサポート中の系列と配布方法に合う最新のセキュリティパッチと更新手順を選びます。別のRubyアプリでは外部の人が決めた規則をコンパイルするかを調べられます。Rubyは、開発者が書いた固定の規則だけならこの条件に当たらず、処理時間や入力長の制限だけでは確実に防げないと説明しています。
猫と一緒に読み解く Q&A
- 猫の研究員
パッチをダウンロードしたという返事で終われる?
ポケットノート実際の要求を処理するGitLabの版と配備完了の記録が必要だよ。パッケージやコンテナの準備と、動いているサービスの変更は別の段階。管理型サービスなら公式の修正済み範囲に自分の環境が入るかも確かめられるよ。
3. 修正後も侵入痕跡を調べる理由
パッチは今後同じ欠陥を使う経路を直す作業です。それ以前に攻撃者がサーバーで作業したかは、接続・エラー・セキュリティ検知の記録を調べて答えます。GitLabはこのCVEの攻撃試行を見つけるための検知項目も6件公開しています。
| 管理者に聞くこと | 受け取る根拠 |
|---|---|
| 運用方法と版が影響範囲に入るか | 自前・管理型の区分と現在の版 |
| 実サービスへ修正が反映されたか | 稼働版、適用完了の時刻・記録 |
| 露出していた期間を調べたか | 保存記録と公式検知項目による調査結果 |
- 管理者に聞くこと
運用方法と版が影響範囲に入るか
- 受け取る根拠
- 自前・管理型の区分と現在の版
- 管理者に聞くこと
実サービスへ修正が反映されたか
- 受け取る根拠
- 稼働版、適用完了の時刻・記録
- 管理者に聞くこと
露出していた期間を調べたか
- 受け取る根拠
- 保存記録と公式検知項目による調査結果
CISAはこの項目の対応期限を11月1日と記しています。指令の法的義務は米国の連邦民間行政機関が対象で、全読者共通の猶予期間ではありません。自前運用者は自分の環境の露出と開発元の案内で優先度を決めます。CISA指令の適用範囲
猫と一緒に読み解く Q&A
- 猫の研究員
検知記録がなければ侵入もなかったと言える?
ポケットノート何をどれだけ保存し、どの項目を調べたかが先だよ。記録が不足するなら調査範囲と空白も受け取ろう。修正完了と過去の侵入を一つの答えにしない理由だよ。
まとめ
自動化サービスを守る二つの根拠
稼働版から修正反映を、調査記録から過去の露出の経過を読めます。コードのテストや配布を任せるサービスでは、通常の自動化規則を読む場所でもサーバーの権限を守ることが大切になります。
出典
- CISA原本一覧cisa.gov
- GitLab修正案内docs.gitlab.com
- Ruby開発元の説明ruby-lang.org
- CISA指令の適用範囲cisa.gov