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

我们已发布 date gem 版本 3.2.1、3.1.2、3.0.2 和 2.0.1,其中包括对日期解析方法中正则表达式拒绝服务漏洞 (ReDoS) 的安全修复。攻击者可以利用此漏洞导致有效的 DoS 攻击。此漏洞已被分配 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,请将 gem "date", ">= 3.2.1" 添加到您的 Gemfile 中。或者,您可以将 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)
  • 关于新 Ruby 版本的提及于 2021-11-24 13:20:00 (UTC)