広告掲載
パソコン

Rubyに正規表現エンジンのRCE脆弱性、修正版4.0.9など公開

Ruby開発チームはOnigmo正規表現エンジンの複数の問題に対応するセキュリティ更新を公開した。GitLabが報告した脆弱性で、細工した正規表現によりメモリ破壊が起きる可能性がある。

Ruby開発チームは2026年10月23日(UTC)、Rubyが使用する正規表現エンジンOnigmoに関する複数の問題に対応したセキュリティ更新を公開した。修正版はRuby 4.0.9、Ruby 3.4.12、Ruby 3.3.13。

問題はGitLabが報告したもので、GitLabのサーバー上でリモートコード実行につながる可能性があるとされている。CVE番号はCVE-2026-89078、CVE-2026-93577、CVE-2026-97229、CVE-2026-110264の4件が割り当てられた。

内容は正規表現パーサーにおける二重解放や、CI/CD用を含む正規表現コンパイラにおける整数オーバーフローなど。Rubyが細工された正規表現をコンパイルする際にメモリが破壊され、リモートコード実行につながるおそれがある。

影響を受けるのは、Regexp.new、Regexp.union、Regexp.compile、あるいは正規表現リテラルへの文字列展開などにより、攻撃者が制御できる文字列から正規表現をコンパイルしているアプリケーション。開発者が記述した正規表現のみを使っているアプリケーションは影響を受けない。Rubyチームによると、タイムアウトやパターン長の制限は信頼できる緩和策にならないという。

すぐに更新できない場合は、信頼できない入力から正規表現をコンパイルしないよう呼びかけている。なおRuby 3.3.13では、同梱のresolvライブラリもv0.3.2に更新された。

CVE番号の扱いとGitLab側の対応

Ruby側は今回の問題を自ら脆弱性として扱うかどうかを決めておらず、CVE番号も申請していない。当面の追跡にはGitLabが発行したCVE番号を用いる必要がある。GitLabは先行してGitLab v19.4.1/19.4.2/19.5.1に同梱するRubyを修正しており、今回の修正はRubyのリリースブランチにも取り込まれた。Rubyは1993年にまつもとゆきひろ氏(Matz)が始め、現在もオープンソースとして開発が続いている。

よくある質問

修正版のRubyはどれですか?

Ruby 4.0.9、Ruby 3.4.12、Ruby 3.3.13が公開されています。

どのようなアプリケーションが影響を受けますか?

Regexp.newやRegexp.union、Regexp.compile、正規表現リテラルへの文字列展開などで、攻撃者が制御できる文字列から正規表現をコンパイルしているアプリケーションです。開発者が記述した正規表現のみを使う場合は影響を受けません。

CVE番号はどれを使えばよいですか?

Ruby側はCVE番号を申請していないため、当面はGitLabが発行したCVE-2026-89078、CVE-2026-93577、CVE-2026-97229、CVE-2026-110264で追跡します。

出典