Rubyは2026年10月23日(日本時間)、正規表現エンジンOnigmoの不具合を修正した4.0.9・3.4.12・3.3.13を公開しました。GitLabでリモートコード実行(RCE)に利用できると判明した問題について、Ruby本体に含まれる原因を修正しています。
GitLabを使っていない環境でも、利用者の入力から正規表現を作るRubyアプリは確認が必要です。
対象は、外部入力を正規表現としてコンパイルする処理
影響を受けるのは、攻撃者が用意した文字列をRegexp.new、Regexp.union、Regexp.compileへ渡したり、正規表現リテラルへ展開したりする場合です。Rubyは、細工したパターンのコンパイル中にメモリが破損すると説明しています。
開発者があらかじめ書いた正規表現だけを使うアプリは対象外です。
更新先は4.0.9・3.4.12・3.3.13
4.0.9・3.4.12・3.3.13には、下表の3件の修正がすべて入っています。4.0.8にはCVE-2026-110264に対応する修正が含まれないため、4.0系列でも4.0.9以降が更新先です。
| GitLabのCVE | Ruby側の不具合 |
|---|---|
| CVE-2026-89078 | 選択(|)を含むパターンの解析失敗時の二重解放 |
| CVE-2026-93577 / CVE-2026-97229 | コンパイル後のサイズに関する整数オーバーフロー |
| CVE-2026-110264 | 繰り返しを多数含むパターンで内部IDがオーバーフロー |
ここに挙げた番号はGitLabが割り当てたもので、Rubyは現時点では独自のCVEを申請していません。追跡には上記の番号を使うよう案内しています。GitLabの利用者は、GitLabの公式更新情報に従って製品側の修正版を適用してください。
更新できない間は、外部入力からのコンパイルを避ける
Rubyは、この問題をRegexp.timeoutでは防げず、一部は短いパターンでも起きるため、長さ制限も確実な回避策にならないと説明しています。そのうえで修正版への更新を推奨し、すぐに更新できない場合は、信頼できない入力を正規表現としてコンパイルしないよう案内しています。検索やフィルター機能で利用者がパターンを指定できる場合は、その実装を確認してください。
3.3系列はセキュリティ保守中です。一方、3.2以前はRuby本体の保守が終了しているため、保守状況とアプリの互換性を確認し、保守が続いている系列への移行を検討してください。

コメント