ActiveRecord中的SQL注入漏洞深度解析

本文详细分析了Ruby on Rails框架中ActiveRecord组件的一个高危SQL注入漏洞(CVE-2011-2930)。该漏洞源于`quote_table_name`方法对用户输入处理不当,允许攻击者通过构造特定的列名执行任意SQL命令。文章涵盖了受影响的版本范围、修复版本以及相关的安全参考资料。

activerecord 易受SQL注入攻击

漏洞详情

漏洞编号: CVE-2011-2930 严重性: 高危 发布状态: 已于2017年10月24日发布至GitHub Advisory Database,并于2020年6月16日审核,最后更新于2025年11月3日。

受影响组件

软件包: activerecord (RubyGems)

受影响版本

  • 版本 >= 2.0.0, < 2.3.13
  • 版本 >= 3.0.0.beta, < 3.0.10
  • 版本 >= 3.1.0.beta1, < 3.1.0.rc5

已修复版本

  • 2.3.13
  • 3.0.10
  • 3.1.0.rc5

漏洞描述

Ruby on Rails框架中,位于 activerecord/lib/active_record/connection_adapters/ 目录下的ActiveRecord适配器中的 quote_table_name 方法存在多个SQL注入漏洞。此漏洞影响了2.3.13之前的Rails 2.3.x版本、3.0.10之前的Rails 3.0.x版本以及3.1.0.rc5之前的Rails 3.1.x版本。远程攻击者能够通过构造恶意的列名来执行任意的SQL命令。

参考资料

国家漏洞数据库发布日期: 2011年8月29日

安全评分

  • EPSS 分数: 0.955% (第76百分位数)。此分数估计了该漏洞在未来30天内被利用的概率。

弱点分类

  • CWE: CWE-89 - SQL命令中使用的特殊元素中和不当(SQL注入)
    • 描述: 产品使用来自上游组件的外部影响输入来构造全部或部分SQL命令,但未能中和或错误地中和了在发送到下游组件时可能修改预期SQL命令的特殊元素。如果对用户可控输入中的SQL语法没有进行充分的移除或引号转义,生成的SQL查询可能导致这些输入被解释为SQL语句而非普通的用户数据。

标识符

  • CVE ID: CVE-2011-2930
  • GHSA ID: GHSA-h6w6-xmqv-7q78

源代码

  • rails/rails (GitHub仓库)

致谢

  • 分析人员: tjuyuxinzhang

(此安全公告已被编辑。详情请查阅历史记录。如果您有任何改进建议,欢迎为该漏洞提供改进方案。)

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计