https://www.elttam.com/blog/rails-sqlite-gadget-rce/
总结
网页主要介绍了在 Ruby on Rails 应用程序中利用不安全的反射和反序列化实现远程代码执行(RCE)的新方法。
摘要
网页详细探讨了在最小安装的 Ruby on Rails 应用程序上,通过不安全的反射和反序列化实现 RCE 的新方法。研究人员发现了 sqlite3
gem 中的 SQLite3::Database
类可以作为一个新的反射小工具,通过加载 SQLite 扩展库来实现 RCE。此外,通过分析 Rack 处理 multipart/form-data
请求的方式,研究人员发现可以通过文件上传功能将文件写入文件系统,并通过 /proc/self/fd/x
文件路径来访问这些文件。进一步,研究人员将 SQLite3::Database
反射小工具转化为一个反序列化小工具,通过一个 gadget chain,利用 ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy
来实现 RCE。这种攻击方法可能会影响到安装了 sqlite3
、activerecord
和 activesupport
gems 的 Rails 应用程序。
观点
- 不安全的反射和反序列化在 Rails 应用程序中仍然是一个严重的安全问题,可能导致 RCE。
SQLite3::Database
类可以作为一个反射小工具,通过加载 SQLite 扩展库来实现 RCE。- Rails 应用程序通过 Rack 处理文件上传时,可以利用这一机制将文件写入
/tmp
文件夹,并通过/proc/self/fd/x
访问这些文件。 - 通过构建一个 gadget chain,可以将
SQLite3::Database
反射小工具转化为一个反序列化小工具,利用ActiveSupport::Deprecation::DeprecatedInstanceVariableProxy
实现 RCE。 - 这种新的攻击方法可能会影响到默认安装了
sqlite3
、activerecord
和activesupport
gems 的 Rails 应用程序。 - 研究人员强调,由于
DeprecatedInstanceVariableProxy
gadget 自 2013 年以来已知,且这种攻击利用了加载 SQLite3 扩展的合法需求,因此这种攻击方法可能会在一段时间内有效。