发布者:usa,发布于 2018 年 10 月 17 日
在某些格式下,Array#pack
和 String#unpack
中,原始数据的受污染标记不会传播到返回的字符串/数组。此漏洞已被分配 CVE 标识符 CVE-2018-16396。
详细信息
Array#pack
方法使用指定的格式将接收器的内容转换为字符串。如果接收器包含一些受污染的对象,则返回的字符串也应该是受污染的。String#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 及更早版本
- 早于 trunk 版本 r65125
鸣谢
感谢 Chris Seaton 报告此问题。
历史记录
- 最初发布于 2018-10-17 14:00:00 (UTC)