Experimental feature in 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#packString#unpack 中受污染的标志未正确传播 附加的污染操作 ruby/spec :security 中测试 附加的污染操作
CVE-2018-6914 tempfiletmpdir 中目录遍历导致意外文件和目录创建 路径清理 ruby/spec :security 中测试 路径清理
CVE-2018-8779 UNIXServerUNIXSocket 中受污染的 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)。

联系我们