CVE-2021-41817: 日付をパースするメソッドにおける正規表現 Denial of Service の脆弱性について

日付をパースするメソッドにおける正規表現 Denial of Service(ReDoS)脆弱性の修正を含む、date gem 3.2.1、3.1.2、3.0.2、2.0.1 をリリースしました。攻撃者はこの脆弱性を悪用し、効果的な DoS 攻撃を引き起こすことができます。

詳細

Date.parse を含む、日付をパースするメソッドの内部では正規表現を利用しており、これらには ReDoS 攻撃に対して脆弱なものがあります。信頼できない入力値に対してこれらのメソッドを適用しているアプリケーションおよびライブラリはこの脆弱性の影響を受ける可能性があります。

この修正では、正規表現を変更するのではなく、入力値をデフォルトで 128 バイトまでに制限するようにしています。date gem は多くの正規表現を利用しており、脆弱性のある正規表現が他にも潜んでいる可能性があるためです。互換性のため、Date.parse(str, limit: nil) のように、limitnil を明示的に渡すことでこの制限を除外することができますが、パースに時間がかかる可能性があることに留意してください。

date gem を 3.2.1、3.1.2、3.0.2、2.0.1 かそれ以降のバージョンにアップデートしてください。gem update date でアップデートできます。もし bundler を使っている場合は、Gemfilegem "date", ">= 3.2.1" を追加してください。

影響を受けるバージョン

  • date gem 2.0.0 およびそれ以前のバージョン(Ruby 2.6 系列にバンドルされているバージョン)
  • date gem 3.0.1 およびそれ以前のバージョン(Ruby 2.7 系列にバンドルされているバージョン)
  • date gem 3.1.1 およびそれ以前のバージョン(Ruby 3.0 系列にバンドルされているバージョン)
  • date gem 3.2.0 およびそれ以前のバージョン

クレジット

この脆弱性情報は、svalkanov 氏によって報告されました。

更新履歴

  • 2021-11-15 17:00:00 (JST) 初版