ActiveRecord SQL 注入漏洞深度剖析:CVE-2011-2930

本文详细介绍了Ruby on Rails框架中ActiveRecord组件的一个高危SQL注入漏洞(CVE-2011-2930)。该漏洞存在于多个版本的`quote_table_name`方法中,攻击者可通过构造特定的列名执行任意SQL命令。

漏洞概述

CVE-2011-2930 是 Ruby on Rails 框架中 ActiveRecord 组件的一个严重安全漏洞,被归类为 SQL 注入类型,威胁等级为高危。该漏洞允许远程攻击者执行任意的 SQL 命令。

受影响的组件

  • 包名: activerecord (通过 RubyGems 分发)
  • 受影响版本:
    • Rails 2.x: 从 2.0.0 到 2.3.13 之前的版本
    • Rails 3.0.x: 从 3.0.0.beta 到 3.0.10 之前的版本
    • Rails 3.1.x: 从 3.1.0.beta1 到 3.1.0.rc5 之前的版本

漏洞详情

该漏洞存在于 ActiveRecord 连接适配器中的 quote_table_name 方法内。具体路径为:activerecord/lib/active_record/connection_adapters/

漏洞成因:该方法未能正确过滤或转义外部输入(在此案例中为列名),导致攻击者可以通过提交精心构造的列名字符串,将恶意 SQL 代码注入到最终生成的 SQL 查询命令中。

修复版本

已发布以下修补版本以解决此漏洞:

  • 2.3.13
  • 3.0.10
  • 3.1.0.rc5

用户应立即升级到对应的修补版本或更高版本。

安全弱点

此漏洞被归类为 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日
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计