CVE-2018-8778: String#unpack 中缓冲区欠读缺陷
由 usa 发表于 2018-03-28
翻译: Delton Ding
String#unpack 中存在一个缓冲区欠读缺陷。此缺陷已被分配 CVE 标识符 CVE-2018-8778。
细节
String#unpack 接受一个格式化标识作为其参数。通过 @ 标识可以指定解析数据的位置。当一个 @ 参数含有一个过大数字,数字会被作为负数处理,此时会发生可以读取到缓冲区外的数据。当脚本接受外部输入作为 String#unpack 的参数时,攻击者可利用此缺陷读取到堆上的数据。
所有使用受影响版本的用户应立即升级。
受影响版本
- Ruby 2.2 系列:2.2.9 及更早版本
- Ruby 2.3 系列:2.3.6 及更早版本
- Ruby 2.4 系列:2.4.3 及更早版本
- Ruby 2.5 系列:2.5.0 及更早版本
- Ruby 2.6 系列:2.6.0-preview1
- SVN trunk 早于 r62992 的所有版本
鸣谢
感谢 aerodudrizzt 报告了此问题。
历史
- 最早于 2018-03-28 14:00:00 (UTC) 发布
最新消息
Ruby 4.0.0 preview3 已发布
我们很高兴地宣布 Ruby 4.0.0-preview3 已发布。 Ruby 4.0 引入了 Ruby::Box 和 “ZJIT”,以及若干改进。
由 naruse 发表于 2025-12-18
Ruby 3.4.8 已发布
Ruby 3.4.8 已发布。
由 k0kubun 发表于 2025-12-17
Ruby 4.0.0 preview2 已发布
我们很高兴地宣布 Ruby 4.0.0-preview2 已发布。Ruby 4.0 更新 Unicode 版本至 17.0.0,还有一些其他变更。
由 naruse 发表于 2025-11-17
Ruby 3.3.10 已发布
Ruby 3.3.10 已发布。
由 nagachika 发表于 2025-10-23