CVE-2021-41817: 日期解析方法的正则表达式拒绝服务漏洞

mame 发布于 2021年11月15日

我们已发布 date gem 版本 3.2.1、3.1.2、3.0.2 和 2.0.1,其中包括对日期解析方法中的正则表达式拒绝服务 (ReDoS) 漏洞的安全修复。攻击者可以利用此漏洞造成有效的拒绝服务攻击。该漏洞已分配 CVE 标识符 CVE-2021-41817

详情

Date 的解析方法,包括 Date.parse,内部使用正则表达式,其中一些正则表达式容易受到正则表达式拒绝服务攻击。应用和库将这些方法应用于不受信任的输入可能会受到影响。

修复措施是默认将输入长度限制在 128 字节,而不是更改正则表达式。这是因为 Date gem 使用了许多正则表达式,可能仍存在未发现的易受攻击的正则表达式。为了兼容性,可以通过显式传递 limit 关键字参数并设置为 nil 来移除限制,例如 Date.parse(str, limit: nil),但请注意,解析可能需要很长时间。

请将 date gem 更新至 3.2.1、3.1.2、3.0.2 和 2.0.1 或更高版本。您可以使用 gem update date 来更新。如果您使用 bundler,请在您的 Gemfile 中添加 gem "date", ">= 3.2.1"。或者,您可以将 Ruby 更新至 3.0.3、2.7.5、2.6.9 或更高版本。

受影响的版本

  • date gem 2.0.0 或更早版本(Ruby 2.6 系列中早于 Ruby 2.6.9 的捆绑版本)
  • date gem 3.0.1 或更早版本(Ruby 2.7 系列中早于 Ruby 2.7.5 的捆绑版本)
  • date gem 3.1.1 或更早版本(Ruby 3.0 系列中早于 Ruby 3.0.3 的捆绑版本)
  • date gem 3.2.0 或更早版本

致谢

感谢 svalkanov 发现此问题。

历史

  • 首次发布于 2021-11-15 08:00:00 (UTC)
  • 于 2021-11-24 13:20:00 (UTC) 提及新的 Ruby 版本

近期新闻

Ruby 4.0.0 发布

我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 25 日

Ruby 文档的全新外观

继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。

Stan Lo 发布于 2025 年 12 月 23 日

重新设计我们的网站标识

我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。

Hiroshi SHIBATA 发布于 2025 年 12 月 22 日

Ruby 4.0.0 preview3 发布

我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。

naruse 发布于 2025 年 12 月 18 日

更多新闻...