CVE-2020-10933:socket 函数库存在堆内存泄漏风险

socket 函数库存在堆内存泄漏风险。此风险的 CVE 识别号为 CVE-2020-10933。我们强烈建议您升级 Ruby。

风险细节

当调用 BasicSocket#recv_nonblockBasicSocket#read_nonblock 方法,传入 size 与 buffer 参数时,buffer 会被调整为制定大小。当执行被阻塞,他們会不拷贝任何数据立即返回。因此,buffer 字符串可以带有堆内存上的任何数据。这可能导致解释器泄漏敏感数据。

在 Linux 上可以重现这个问题。从 Ruby 2.5.0 开始存在此风险,Ruby 2.4 系列版本没有问题。

受影响版本

  • Ruby 2.5 系列:Ruby 2.5.7 及更早版本
  • Ruby 2.6 系列:Ruby 2.6.5 及更早版本
  • Ruby 2.7 系列:2.7.0
  • master 早于 61b7f86248bd121be2e83768be71ef289e8e5b90 的提交

致谢

感谢 Samuel Williams 报告此问题。

历史

  • 最初发布于 2020-03-31 12:00:00 (UTC)