Experimental feature in GraalVM

安全

请通过 漏洞报告指南 中概述的流程报告安全漏洞。可在 SECURITY 文件 中找到有关报告 GraalVM 项目(包括 TruffleRuby)安全问题的具体指南。

MRI 漏洞 #

针对 MRI 报告的漏洞可能适用于 Ruby 的设计或我们与 MRI 共享的代码。我们在本文档中列出了已报告的 MRI 漏洞,并记录了 MRI 如何缓解漏洞(如果有任何东西测试了缓解措施),以及 TruffleRuby 如何缓解漏洞。我们没有调查所有旧漏洞,因为从旧报告中找出详细信息通常非常困难。

MRI 网站 上的详细信息交叉引用。

编号 描述 他们的缓解措施 测试 我们的缓解措施
CVE-2024-27282 使用正则表达式搜索的任意内存地址读取漏洞 修复   由于 Java 语义,不适用
CVE-2024-27281 RDoc 中 `.rdoc_options` 的 RCE 漏洞 修复 测试 不适用,因为 TruffleRuby 不会在 gem install 上生成 rdoc
CVE-2024-27280 StringIO 中的缓冲区溢出漏洞 修复 测试 不适用,我们使用 Ruby 实现的 StringIO
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 日期中的正则表达式拒绝服务漏洞 (ReDoS) 修复 测试 由于 TRegex,不适用
CVE-2021-41816 CGI.escape_html 中的缓冲区溢出 修复 测试 不适用,我们使用 Ruby 定义的 CGI.escape_html
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-2021-28965 REXML 中的 XML 往返漏洞 更新到 REXML 3.2.5 在 ruby/rexml 中 更新到 REXML 3.2.5
CVE-2020-10663 JSON 中的不安全对象创建漏洞(附加修复) 修复 规范 我们使用的纯 Ruby 版本的 JSON 是安全的
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 N/A 相同
CVE-2015-9251 RDoc 中的多个 jQuery 漏洞 删除 jquery.js N/A 相同
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 中测试 应用了相同的补丁
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 中测试  
更改 ext/openssl 的默认设置      
CVE-2014-2734 漏洞争议      
CVE-2014-0160 TLS 心跳扩展中的 OpenSSL 严重漏洞      
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
RubyGems 的安全修复:远程存储库的 SSL 服务器验证失败      
CVE-2011-3389 Ruby OpenSSL 模块的安全修复:允许 0/n 拆分以防止 TLS BEAST 攻击      
CVE-2011-4815 Ruby 的 Hash 算法发现拒绝服务攻击(交叉引用 CVE-2011-4838、CVE-2012-5370、CVE-2012-5372) 通过合并进程启动时间使哈希值变得非确定性 ruby/spec :security 中测试 通过合并来自 /dev/urandom 的种子使哈希值变得非确定性
异常方法可以绕过 $SAFE     不适用,因为我们不支持 $SAFE
FileUtils 容易受到符号链接竞争攻击      
CVE-2010-0541 WEBrick 中的 XSS     WEBrick 不再附带
ARGF.inplace_mode= 中的缓冲区溢出      
WEBrick 存在转义序列注入漏洞     WEBrick 不再附带
CVE-2009-5147 DL::dlopen 使用污染的名称打开库 额外的污染检查 现代 Ruby 中不存在 DL 模块 不适用,因为我们不支持 $SAFE,并且 DL 模块已在 Ruby 2.2.0 中删除
CVE-2009-4124 String 中的堆溢出      
BigDecimal 中的 DoS 漏洞      
REXML 中的 DoS 漏洞      
CVE-2008-1447 Ruby 中的多个漏洞      
CVE-2008-2662, CVE-2008-2663, CVE-2008-2725, CVE-2008-2726, CVE-2008-2664, CVE-2008-1891 任意代码执行漏洞      
WEBrick 的文件访问漏洞     WEBrick 不再附带
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 中测试 通过合并来自 /dev/urandom 的种子使哈希值变得非确定性
CVE-2011-4838 1.6.5.1 之前的 JRuby 版本在计算哈希值时,没有限制触发哈希冲突的可预测性(交叉引用 CVE-2011-4815、CVE-2012-5370、CVE-2012-5372) 通过合并进程启动时间使哈希值变得非确定性 ruby/spec :security 中测试 通过合并来自 /dev/urandom 的种子使哈希值变得非确定性

Rubinius 漏洞 #

TruffleRuby 使用来自 Rubinius 的代码,因此针对 Rubinius 报告的漏洞可能适用于 TruffleRuby。

编号 描述 他们的缓解措施 测试 我们的缓解措施
CVE-2012-5372 Rubinius 在计算哈希值时,没有正确限制触发哈希冲突的可预测性(交叉引用 CVE-2011-4815、CVE-2011-4838、CVE-2012-5370) 通过合并来自 /dev/urandom 的输出使哈希值变得非确定性 ruby/spec :security 中测试 通过合并来自 /dev/urandom 的种子使哈希值变得非确定性

Java 依赖项漏洞 #

JONI #

没有已知的漏洞。

JCodings #

编号 描述 他们的缓解措施 测试 我们的缓解措施
CVE-2010-1330 $KCODE 设置为 'u' 时,1.4.1 之前的 JRuby 中的正则表达式引擎无法正确处理 UTF-8 字符之后的字符 在执行正则表达式操作时,检查 UTF-8 编码的字节序列 ruby/spec :security 中测试 应用了相同的缓解措施

其他依赖项漏洞 #

zlib #

目前没有已知的漏洞,但请考虑系统 zlib 中的潜在漏洞。

libssl #

请考虑系统 libssl 中的潜在漏洞。

FFI #

编号 描述 他们的缓解措施 测试 我们的缓解措施
CVE-2018-1000201 当使用 Symbol 作为库名称时,Windows 上的 DLL 加载问题可能会被劫持 ffi_lib 中将 Symbols 与 Strings 同等对待   应用了相同的缓解措施,使用修复了此漏洞的 FFI 版本

关于哈希的说明 #

TruffleRuby 使用 MurmurHash2 哈希,种子来自 /dev/urandom - 它无法配置为使用任何其他哈希算法。对于字符串哈希,TruffleRuby 使用 Java 的哈希算法(然后在上面使用 MurmurHash2)。

联系我们