CVE-2018-16396: Tainted 标志在 Array#pack 和 String#unpack 中的某些指令下未传播
由 usa 于 2018 年 10 月 17 日发布
在使用某些格式的 Array#pack 和 String#unpack 时,原始数据的 tainted 标志未传播到返回的字符串/数组。此漏洞已分配 CVE 标识符 CVE-2018-16396。
详情
Array#pack 方法将接收者的内容转换为指定格式的字符串。如果接收者包含某些被标记(tainted)的对象,返回的字符串也应该被标记。将接收者转换为数组的 String#unpack 方法也应该将其 Tainted 标记传播给返回数组中的对象。但是,使用 B、b、H 和 h 指令时,Tainted 标记不会被传播。因此,如果一个脚本通过 Array#pack 和/或 String#unpack 使用这些指令处理不可靠的输入,并通过 Tainted 标记检查其可靠性,则该检查可能会出错。
所有运行受影响版本的用户都应立即升级。
受影响的版本
- 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)
近期新闻
Ruby 4.0.0 发布
我们很高兴地宣布 Ruby 4.0.0 的发布。Ruby 4.0 引入了“Ruby Box”和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 25 日
Ruby 文档的全新外观
继 ruby-lang.org 重新设计之后,我们还有更多好消息来庆祝 Ruby 成立 30 周年:docs.ruby-lang.org 采用了 Aliki——RDoc 的新默认主题,焕然一新。
由 Stan Lo 发布于 2025 年 12 月 23 日
重新设计我们的网站标识
我们很高兴地宣布对我们的网站进行全面重新设计。此次更新的设计由 Akatsuka Taeko 创作。
由 Hiroshi SHIBATA 发布于 2025 年 12 月 22 日
Ruby 4.0.0 preview3 发布
我们很高兴地宣布 Ruby 4.0.0-preview3 的发布。Ruby 4.0 引入了 Ruby::Box 和“ZJIT”,并增加了许多改进。
由 naruse 发布于 2025 年 12 月 18 日