ニュース

「Ruby」の正規表現エンジン「Onigmo」にリモートコード実行の問題、セキュリティ更新を実施

v4.0.9、v3.4.12、v3.3.13が公開。「GitLab」で発見される

「Ruby」の公式サイトで公開されたお知らせ

 スクリプト言語「Ruby」の開発チームは10月23日(協定世界時)、「Ruby」のセキュリティアップデートを実施した。「Ruby」で用いられている正規表現エンジン「Onigmo」に、複数の問題があったという。

 これらは「GitLab」サーバーでリモートコード実行に悪用されうるとして、米GitLabによって報告されたもの。以下の4件のCVE番号が割り当てられている。

  • CVE-2026-89078:正規表現パーサーにおける二重解放(Double Free)
  • CVE-2026-93577:正規表現コンパイラーにおける整数オーバーフロー・CVE-2026-97229:CI/CDの正規表現コンパイラーにおける整数オーバーフロー
  • CVE-2026-110264:正規表現コンパイラーにおける整数オーバーフロー

 細工された正規表現パターンを与えると、「Ruby」が正規表現をコンパイルする際にメモリが破壊され、最悪の場合、リモートコード実行に悪用される可能性があるという。

 GitLabは「GitLab」v19.4.1/19.4.2/19.5.1で同梱する「Ruby」にパッチを当て、すでにこれらの問題に対処していたが、今回「Ruby」の各系列にも必要な修正が取り込まれた。

 この問題の影響を受けるのは、攻撃者が制御できる文字列から正規表現をコンパイルしているアプリケーション。具体的には、「Regexp.new」「Regexp.union」「Regexp.compile」に渡したり、「/#{input}/」のように正規表現リテラルに埋め込んだりしている場合だ。開発者自身が記述した正規表現だけを使っているアプリケーションは影響を受けない。タイムアウトを設けたり、パターンの長さを制限したりしても、確実な対策にはならないとのことで、開発チームは以下の対策バージョンへのアップデートを推奨している。

 すぐにアップデートできない場合は、信頼できない入力から正規表現をコンパイルしないようにすることが肝要だ。

 ちなみに、「Ruby」側ではこれらの問題を脆弱性として扱うかどうかを決めておらず、現時点ではCVE番号は申請していないとのこと。セキュリティスキャナーなどで追跡する際は、当面の間「GitLab」で申請されたCVE番号を参照するよう案内されている。

 「Ruby」は、まつもとゆきひろ(Matz)氏によって1993年に開発が始められたスクリプト言語。オープンソースで開発が続けられており、Webアプリケーションをはじめ、さまざまな用途・プラットフォームで採用されている。ソースコードは現在、公式のWebサイトから無償でダウンロード可能。Windows環境では「RubyInstaller for Windows」の利用が推奨されている。