CVE-2024-27280: StringIO 中的緩衝區 overread 漏洞

我們發布了 StringIO gem 版本 3.0.1.1 和 3.0.1.2,對緩衝區 overread 漏洞進行了安全性修復。 該漏洞的 CVE 編號為 CVE-2024-27280

風險細節

在 StringIO 3.0.1 中發現了一個問題,Ruby 影響版本為 3.0.x 至 3.0.6 和 3.1.x 至 3.1.4。

StringIO 中的 ungetbyteungetc 方法能夠讀取超過字串結尾的內容,如果繼續呼叫 StringIO.gets 會回傳記憶體中的資料。

此漏洞不影響 StringIO 3.0.3 及更新版本,和 Ruby 3.2.x 及更新版本。

建議行動

我們建議升級 StringIO gem 至 3.0.3 或更新版本。為了確保相容於 Ruby 舊版本,您可以按照以下方式進行升級:

  • Ruby 3.0: 升級至 stringio 3.0.1.1
  • Ruby 3.1: 升級至 stringio 3.0.1.2

注意: StringIO 3.0.1.2 除了漏洞修復之外,也包含了錯誤修復 [Bug #19389]

您可以使用 gem update stringio 進行更新。如果您使用 bundler,請將 gem "stringio", ">= 3.0.1.2" 加入到您的 Gemfile 中。

受影響版本

  • Ruby 3.0.6 及更早版本
  • Ruby 3.1.4 及更早版本
  • StringIO gem 3.0.1 及更早版本

致謝

感謝 david_h1 發現此問題。

歷史

  • 修復 StringIO 影響版本 (3.0.2 -> 3.0.1) 於 2024-04-11 12:50:00 (UTC)
  • 最初發佈於 2024-03-21 4:00:00 (UTC)