CVE-2018-16396: 特定命令下受污染标记未如实展开到 Array#pack 和 String#unpack 结果中
由 usa 发表于 2018-10-17
翻译: Delton Ding
使用 Array#pack 和 String#unpack 处理某些特定格式时,原数据的受污染标记并未展开至返回的字符串或数组中。此缺陷已被分配 CVE 编号 CVE-2018-16396。
细节
Array#pack 方法将其接收的内容转换成某一特定格式。当参数包含一些受污染的对象,返回字符串也应该包含这些污染。Array#unpack 方法将参数展开成一个数组,也应该将受污染的标记转换到返回的数组中。然而,当命令含有 B、b、H 和 h 时,污染标记并不会被展开。所以,如果你的脚本使用 Array#pack 和/或 String#unpack 来处理了不可靠的输入后,尝试检查这些受污染标记,检查结果可能出错。
所有用户皆应尽快升级。
受影响的版本
- Ruby 2.3 系列: 2.3.7 及更早版本
- Ruby 2.4 系列: 2.4.4 及更早版本
- Ruby 2.5 系列: 2.5.1 及更早版本
- Ruby 2.6 系列: 2.6.0-preview2 及更早版本
- SVN 主干早于 r65125 的全部版本
鸣谢
感谢 Chris Seaton 报告了这一问题。
历史
- 最早发布于 2018-10-17 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