ActiveRecord 早期版本存在SQL注入漏洞(CVE-2011-2930)剖析

本文详细分析了Ruby on Rails框架中ActiveRecord组件在2.x及3.x早期版本中存在的SQL注入漏洞。该漏洞源于`quote_table_name`方法对列名处理不当,允许攻击者通过构造特殊的列名执行任意SQL命令。文章列出了受影响的版本范围、修复版本及安全参考链接。

漏洞详情

包信息

  • 包管理器: RubyGems
  • 受影响的包: activerecord

受影响版本

  • 版本 >= 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 2.3.13之前版本、3.0.x的3.0.10之前版本以及3.1.x的3.1.0.rc5之前版本中,位于activerecord/lib/active_record/connection_adapters/目录下的ActiveRecord适配器中的quote_table_name方法存在多处SQL注入漏洞。远程攻击者能够通过构造恶意的列名,执行任意SQL命令。

严重性

此漏洞被评定为高危级别。

弱点类型

  • CWE-89: 对SQL命令中使用的特殊元素进行不当中和(‘SQL注入’)。
  • 描述: 产品在构造SQL命令时,使用了来自上游组件的外部输入,但在将命令发送到下游组件时,未能中和或错误地中和了可能修改原定SQL命令的特殊元素。

参考信息

元数据

  • CVE ID: CVE-2011-2930
  • GHSA ID: GHSA-h6w6-xmqv-7q78
  • 源代码仓库: rails/rails
  • 国家漏洞数据库(NVD)发布时间: 2011年8月29日
  • GitHub咨询数据库发布时间: 2017年10月24日
  • 最近更新时间: 2025年11月3日
  • EPSS分数: 0.955% (估计未来30天内被利用的概率,处于第76百分位数)

致谢

漏洞分析由 tjuyuxinzhang 提供。

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