tenderlove 发布于 2013 年 11 月 22 日
Ruby 中的浮点数解析存在溢出。此漏洞已分配 CVE 标识符 CVE-2013-4164。
详细信息
每当字符串转换为浮点数值时,一个特制字符串可能导致堆溢出。 这可能导致通过段错误进行的拒绝服务攻击,甚至可能导致任意代码执行。任何将未知来源的输入转换为浮点数值的程序(在接受 JSON 时尤其常见)都存在漏洞。
存在漏洞的代码类似于这样
untrusted_data.to_f
但任何从外部数据生成浮点值的代码都存在漏洞,例如这样
JSON.parse untrusted_data
请注意,此错误类似于 CVE-2009-0689。
所有运行受影响版本的用户都应升级到已修复的 Ruby 版本。
受影响的版本
- Ruby 1.8.6 patchlevel 230 之后的所有 Ruby 1.8 版本
- Ruby 1.9.3 patchlevel 484 之前的所有 Ruby 1.9 版本
- Ruby 2.0.0 patchlevel 353 之前的所有 Ruby 2.0 版本
- Ruby 2.1.0 preview2 之前的所有 Ruby 2.1 版本
- trunk revision 43780 之前的版本
解决方案
建议所有用户升级到 Ruby 1.9.3 patchlevel 484、Ruby 2.0.0 patchlevel 353 或 Ruby 2.1.0 preview2。
请注意,Ruby 1.8 系列或任何更早的版本都已过时。 没有计划为它们发布新的已修复版本。建议这些版本的用户尽快升级,因为我们无法保证对不受支持的版本继续提供安全修复。
鸣谢
感谢 Charlie Somerville 报告此问题!
历史记录
- 最初发布于 2013-11-22 04:00:00 UTC
- 第二次发布于 2013-11-22 06:46:00 UTC
- 第三次发布于 2013-11-22 22:46:00 UTC
- 第四次发布于 2013-12-10 12:09:38 UTC