由 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)