版本
- 适用于 JDK 24 的 GraalVM(最新)
- 适用于 JDK 25 的 GraalVM(早期访问)
- 适用于 JDK 21 的 GraalVM
- 适用于 JDK 17 的 GraalVM
- 存档
- 开发构建
安全性
请通过报告漏洞指南中概述的流程报告安全漏洞。有关报告GraalVM项目(包括TruffleRuby)安全问题的具体指南,请参阅SECURITY文件。
MRI 漏洞 #
针对 MRI 报告的漏洞可能适用于 Ruby 的设计或我们与 MRI 共享的代码。我们在此列出报告的 MRI 漏洞,并记录了 MRI 如何缓解该漏洞(如果该缓解措施经过测试),以及 TruffleRuby 如何缓解。我们尚未调查所有遗留漏洞,因为从旧报告中找出详细信息通常非常困难。
参考 MRI 网站上的详细信息。
编号 | 描述 | 他们的缓解措施 | 测试 | 我们的缓解措施 |
---|---|---|---|---|
CVE-2024-49761 | REXML 中的 ReDoS 漏洞 | 修复 | 测试 | 由于 TRegex 而不适用 |
CVE-2024-39908 | REXML 中的 DoS | 修复 | 测试 | 与 CRuby 相同的缓解措施,用户如果使用 rexml,则必须将其更新到 3.3.2+ |
CVE-2024-35176 | REXML 中的 DoS | 修复 | 测试 | 与 CRuby 相同的缓解措施,用户如果使用 rexml,则必须将其更新到 3.2.7+ |
CVE-2024-27282 | 正则表达式搜索中的任意内存地址读取漏洞 | 修复 | 由于 Java 语义而不适用 | |
CVE-2024-27281 | RDoc 中 .rdoc_options 的 RCE 漏洞 | 修复 | 不适用,因为 TruffleRuby 不在 gem 安装时生成 rdoc | |
CVE-2024-27280 | StringIO 中的缓冲区溢读漏洞 | 修复 | 测试 | 不适用,我们使用 StringIO 的 Ruby 实现 |
CVE-2023-36617 | URI 中的 ReDoS 漏洞 | 修复 | 测试 | 由于 TRegex 而不适用 |
CVE-2023-28756 | Time 中的 ReDoS 漏洞 | 修复 | 测试 | 由于 TRegex 而不适用 |
CVE-2023-28755 | URI 中的 ReDoS 漏洞 | 修复 | 测试 | 由于 TRegex 而不适用 |
CVE-2021-33621 | CGI 中的 HTTP 响应拆分 | 修复 | 测试 | 相同 |
CVE-2022-28739 | 字符串到浮点数转换中的缓冲区溢出 | 由于 Java 语义而不适用 | ||
CVE-2022-28738 | Regexp 编译中的双重释放 | 由于 Java 语义而不适用 | ||
CVE-2021-41819 | CGI::Cookie.parse 中的 Cookie 前缀欺骗 | 修复 | 测试 | 相同 |
CVE-2021-41817 | date 中的正则表达式拒绝服务漏洞 (ReDoS) | 修复 | 测试 | 由于 TRegex 而不适用 |
CVE-2021-41816 | CGI.escape_html 中的缓冲区溢出 | 修复 | 测试 | 不适用,我们使用 CGI.escape_html 的 Ruby 定义 |
CVE-2021-31810 | Net::FTP 中信任 FTP PASV 响应的漏洞 | 修复 | 测试 | 相同 |
CVE-2021-32066 | Net::IMAP 中的 StartTLS 剥离漏洞 | 修复 | 测试 | 相同 |
CVE-2021-31799 | RDoc 中的命令注入漏洞 | 修复 回溯 | 测试 | 相同 |
CVE-2021-28966 | Windows 上 Tempfile 中的路径遍历 | tmpdir.rb 中路径的清理 | 在 test/mri/tests/test_tmpdir.rb 中 |
tmpdir.rb 中路径的清理 |
CVE-2020-25613 | WEBrick 中潜在的 HTTP 请求走私漏洞 | 修复 | WEBrick 不再随标准库一同发布 | |
CVE-2020-10933 | socket 库中的堆内存泄露漏洞 | 修复 | 由于 Java 语义而不适用 | |
CVE-2021-28965 | REXML 中的 XML 往返漏洞 | 更新到 REXML 3.2.5 | 在 ruby/rexml 中 | 更新到 REXML 3.2.5 |
CVE-2020-10663 | JSON 中的不安全对象创建漏洞(附加修复) | 修复 | 规范 | 我们使用的 JSON 纯 Ruby 版本是安全的 |
CVE-2019-16255 | Shell#[] 和 Shell#test 的代码注入漏洞 | 修复 | MRI 测试 | 相同 |
CVE-2019-16254 | WEBrick 中的 HTTP 响应拆分(附加修复) | 修复 | MRI 测试 | 相同 |
CVE-2019-15845 | File.fnmatch 和 File.fnmatch? 的 NUL 注入漏洞 | 修复 | MRI 测试 | 检查 NUL 字节 |
CVE-2019-16201 | WEBrick Digest 访问认证的正则表达式拒绝服务漏洞 | 修复 | MRI 测试 | 相同 |
CVE-2012-6708 | RDoc 中的多个 jQuery 漏洞 | 移除 jquery.js | 不适用 | 相同 |
CVE-2015-9251 | RDoc 中的多个 jQuery 漏洞 | 移除 jquery.js | 不适用 | 相同 |
CVE-2019-8320 | 解压 tar 时使用符号链接删除目录 |
检查已展开的路径 | 在 MRI test/rubygems/test_gem_package.rb 中测试 |
应用了相同的补丁 |
CVE-2019-8321 | verbose 中的转义序列注入 |
清理消息 | 在 ruby/spec :security 中测试 |
应用了相同的补丁 |
CVE-2019-8322 | gem owner 中的转义序列注入 |
清理消息 | 在 ruby/spec :security 中测试 |
应用了相同的补丁 |
CVE-2019-8323 | API 响应处理中的转义序列注入漏洞 | 清理消息 | 在 ruby/spec :security 中测试 |
应用了相同的补丁 |
CVE-2019-8324 | 安装恶意 gem 可能导致任意代码执行 | 在安装前检查前验证 gem | 在 MRI test/rubygems/test_gem_installer.rb 中测试 |
应用了相同的补丁 |
CVE-2019-8325 | 错误中的转义序列注入 | 清理错误消息 | 在 ruby/spec :security 中测试 |
应用了相同的补丁 |
None | RubyGems 中的多个漏洞 | 应用了相同的补丁 | ||
CVE-2018-16395 | OpenSSL::X509::Name 相等性检查无法正常工作 |
|||
CVE-2018-16396 | 使用某些指令时,Array#pack 和 String#unpack 中受污染的标志未正确传播 |
附加的污染操作 | 在 ruby/spec :security 中测试 |
附加的污染操作 |
CVE-2018-6914 | tempfile 和 tmpdir 中目录遍历导致意外文件和目录创建 |
路径清理 | 在 ruby/spec :security 中测试 |
路径清理 |
CVE-2018-8779 | UNIXServer 和 UNIXSocket 中受污染的 NUL 字节导致意外套接字创建 |
检查 NUL 字节 | 在 ruby/spec :security 中测试 |
检查 NUL 字节 |
CVE-2018-8780 | Dir 中受污染的 NUL 字节导致意外目录遍历 |
检查 NUL 字节 | 在 ruby/spec :security 中测试 |
检查 NUL 字节 |
CVE-2018-8777 | WEBrick 中大请求导致的 DoS | 头长度逻辑 | 在 MRI test/webrick/test_httpserver.rb 中测试 |
应用了相同的缓解措施 |
CVE-2017-17742 | WEBrick 中的 HTTP 响应拆分 | 无效头逻辑 | 在 ruby/spec :security 中测试 |
应用了相同的缓解措施 |
CVE-2018-8778 | String#unpack 中的缓冲区下读 | 范围检查 | 在 ruby/spec :security 中测试 |
范围检查 |
CVE-2017-17405 | Net::FTP 中的命令注入漏洞 |
显式将命令中的路径视为路径,而不是通用 IO 命令 | 在 MRI test/net/ftp/test_ftp.rb 中测试 |
应用了相同的缓解措施 |
CVE-2017-10784 | WEBrick 基本认证中的转义序列注入漏洞 | 正确转义日志 | 在 MRI test/webrick/test_httpauth.rb 中测试 |
应用了相同的缓解措施 |
CVE-2017-0898 | Kernel.sprintf 中的缓冲区下溢漏洞 |
|||
CVE-2017-14033 | OpenSSL ASN1 解码中的缓冲区下溢漏洞 | |||
CVE-2017-14064 | 生成 JSON 时堆内存泄露漏洞 | |||
CVE-2017-0902, CVE-2017-0899, CVE-2017-0900, CVE-2017-0901 | RubyGems 中的多个漏洞 | |||
CVE-2015-7551 | Fiddle 和 DL 中不安全的使用受污染字符串(CVE-2009-5147 缓解措施的回归) | 附加的污染检查 | 在 MRI test/mri/tests/fiddle/test_handle.rb 中测试 |
不适用,因为我们不支持 $SAFE ,并且 DL 模块已在 Ruby 2.2.0 中移除 |
CVE-2015-1855 | Ruby OpenSSL 主机名验证 | |||
CVE-2014-8090 | 又一个拒绝服务 XML 扩展 | |||
CVE-2014-8080 | 拒绝服务 XML 扩展 | 在 ruby/spec :security 中测试 |
||
None | 更改了 ext/openssl 的默认设置 | |||
CVE-2014-2734 | 漏洞争议 | |||
CVE-2014-0160 | OpenSSL TLS Heartbeat 扩展中的严重漏洞 | |||
CVE-2014-2525 | YAML URI 转义解析中的堆溢出 | |||
CVE-2013-4164 | 浮点数解析中的堆溢出 | 在 ruby/spec :security 中测试 |
||
CVE-2013-4073 | SSL 客户端中主机名检查绕过漏洞 | |||
CVE-2013-2065 | Ruby 中 DL 和 Fiddle 的对象污染绕过 | 附加的污染检查 | 在 MRI test/mri/tests/fiddle/test_func.rb 中测试 |
不适用,因为我们不支持 $SAFE ,并且 DL 模块已在 Ruby 2.2.0 中移除 |
CVE-2013-1821 | REXML 中的实体扩展 DoS 漏洞 | |||
CVE-2013-0269 | JSON 中的拒绝服务和不安全对象创建漏洞 | |||
CVE-2013-0256 | rdoc 生成的 RDoc 文档的 XSS 攻击 |
|||
CVE-2012-5371 | Ruby 1.9 的哈希洪水 DoS 漏洞 | |||
CVE-2012-4522 | 插入非法 NUL 字符导致意外文件创建 | |||
CVE-2012-4464, CVE-2012-4466 | 关于 Exception#to_s / NameError#to_s 的 $SAFE 逃逸漏洞 |
不适用,因为我们不支持 $SAFE |
||
None | RubyGems 安全修复:远程仓库的 SSL 服务器验证失败 | |||
CVE-2011-3389 | Ruby OpenSSL 模块安全修复:允许 0/n 分割以防止 TLS BEAST 攻击 | |||
CVE-2011-4815 | 发现 Ruby 的哈希算法存在拒绝服务攻击(交叉引用 CVE-2011-4838, CVE-2012-5370, CVE-2012-5372) | 通过包含进程启动时间使哈希变为非确定性 | 在 ruby/spec :security 中测试 |
通过包含来自 /latest/urandom 的种子使哈希变为非确定性 |
None | 异常方法可以绕过 $SAFE |
不适用,因为我们不支持 $SAFE |
||
None | FileUtils 易受符号链接竞争攻击 | |||
CVE-2010-0541 | WEBrick 中的 XSS | WEBrick 不再随库提供 | ||
None | ARGF.inplace_mode= 中的缓冲区溢出 |
|||
None | WEBrick 存在转义序列注入漏洞 | WEBrick 不再随库提供 | ||
CVE-2009-5147 | DL::dlopen 打开带有污染名称的库 |
附加的污染检查 | DL 模块在现代 Ruby 中不存在 |
不适用,因为我们不支持 $SAFE ,并且 DL 模块已在 Ruby 2.2.0 中移除 |
CVE-2009-4124 | String 中的堆溢出 |
|||
None | BigDecimal 中的 DoS 漏洞 |
|||
None | REXML 中的 DoS 漏洞 |
|||
CVE-2008-1447 | Ruby 中的多个漏洞 | |||
CVE-2008-2662, CVE-2008-2663, CVE-2008-2725, CVE-2008-2726, CVE-2008-2664, CVE-2008-1891 | 任意代码执行漏洞 | |||
None | WEBrick 的文件访问漏洞 | WEBrick 不再随库提供 | ||
None | Net::HTTPS 漏洞 |
|||
JVN#84798830 | CGI 库中的另一个 DoS 漏洞 | |||
CVE-2006-5467 | CGI 库中的 DoS 漏洞 | |||
VU#160012 | Ruby 安全级别设置中的漏洞 | 不适用,因为我们不支持 $SAFE |
JRuby 漏洞 #
TruffleRuby 使用 JRuby 的代码,因此针对 JRuby 报告的漏洞可能适用于 TruffleRuby。
编号 | 描述 | 他们的缓解措施 | 测试 | 我们的缓解措施 |
---|---|---|---|---|
CVE-2012-5370 | JRuby 计算哈希值时,没有正确限制可预测地触发哈希冲突的能力(交叉引用 CVE-2011-4815, CVE-2011-4838, CVE-2012-5372) | 通过包含进程启动时间使哈希变为非确定性 | 在 ruby/spec :security 中测试 |
通过包含来自 /latest/urandom 的种子使哈希变为非确定性 |
CVE-2011-4838 | JRuby 1.6.5.1 之前版本计算哈希值时,没有限制可预测地触发哈希冲突的能力(交叉引用 CVE-2011-4815, CVE-2012-5370, CVE-2012-5372) | 通过包含进程启动时间使哈希变为非确定性 | 在 ruby/spec :security 中测试 |
通过包含来自 /latest/urandom 的种子使哈希变为非确定性 |
Rubinius 漏洞 #
TruffleRuby 使用 Rubinius 的代码,因此针对 Rubinius 报告的漏洞可能适用于 TruffleRuby。
编号 | 描述 | 他们的缓解措施 | 测试 | 我们的缓解措施 |
---|---|---|---|---|
CVE-2012-5372 | Rubinius 计算哈希值时,没有正确限制可预测地触发哈希冲突的能力(交叉引用 CVE-2011-4815, CVE-2011-4838, CVE-2012-5370) | 通过包含来自 /latest/urandom 的输出使哈希变为非确定性 |
在 ruby/spec :security 中测试 |
通过包含来自 /latest/urandom 的种子使哈希变为非确定性 |
Java 依赖漏洞 #
JONI #
没有已知漏洞。
JCodings #
编号 | 描述 | 他们的缓解措施 | 测试 | 我们的缓解措施 |
---|---|---|---|---|
CVE-2010-1330 | JRuby 1.4.1 之前的正则表达式引擎,当 $KCODE 设置为 'u' 时,无法正确处理 UTF-8 字符之后的字符 |
执行正则表达式操作时,检查 UTF-8 编码的字节序列 | 在 ruby/spec :security 中测试 |
应用了相同的缓解措施 |
其他依赖漏洞 #
zlib
#
没有已知漏洞,但请考虑您的系统 zlib
中潜在的漏洞。
libssl
#
考虑您的系统 libssl
中潜在的漏洞。
FFI #
编号 | 描述 | 他们的缓解措施 | 测试 | 我们的缓解措施 |
---|---|---|---|---|
CVE-2018-1000201 | 在 Windows 上,当库名使用 Symbol 时,DLL 加载问题可能被劫持 |
在 ffi_lib 中,将 Symbols 视为与 Strings 相同 |
通过使用已修复此漏洞的 FFI 版本,应用了相同的缓解措施 |
哈希注意事项 #
TruffleRuby 使用 MurmurHash2
哈希算法,其种子来自 /latest/urandom
- 无法配置为使用任何其他哈希算法。对于字符串哈希,TruffleRuby 使用 Java 的哈希算法(然后在其上使用 MurmurHash2
)。