Featured image of post 警惕 ActiveRecord SQL 注入漏洞:CVE-2011-2930 深度解析

警惕 ActiveRecord SQL 注入漏洞:CVE-2011-2930 深度解析

本文详细分析了Ruby on Rails框架中ActiveRecord组件在特定版本存在的SQL注入漏洞(CVE-2011-2930),该漏洞源于quote_table_name方法未对用户输入的列名进行充分处理,可能导致远程攻击者执行任意SQL命令。

漏洞详情

CVE-2011-2930

  • 严重等级:高
  • GitHub 状态:已审核
  • 发布时间:2017年10月24日(至 GitHub 公告数据库)
  • 最后更新:2025年11月3日

受影响的软件包

  • bundler
  • activerecord (RubyGems)

受影响的版本

  • ActiveRecord 2.x: >= 2.0.0, < 2.3.13
  • ActiveRecord 3.x: >= 3.0.0.beta, < 3.0.10
  • ActiveRecord 3.1.x: >= 3.1.0.beta1, < 3.1.0.rc5

已修复的版本

  • 2.3.13
  • 3.0.10
  • 3.1.0.rc5

漏洞描述

ActiveRecord 适配器中 quote_table_name 方法存在多个 SQL 注入漏洞。该漏洞位于 Ruby on Rails 的 activerecord/lib/active_record/connection_adapters/ 目录中,影响以下版本:

  • Rails 2.3.13 之前版本
  • Rails 3.0.x 的 3.0.10 之前版本
  • Rails 3.1.x 的 3.1.0.rc5 之前版本

远程攻击者可以通过构造恶意的列名来执行任意 SQL 命令。

技术背景

漏洞根源

该漏洞的核心问题在于 quote_table_name 方法未能对用户输入(特别是列名)进行适当的净化和转义处理。当外部可控的输入被直接用于构建 SQL 查询时,攻击者可以注入特殊的 SQL 语法元素,从而改变原本的 SQL 命令意图。

相关弱点

  • CWE-89: 在 SQL 命令中使用的特殊元素未经适当处理(SQL 注入)
  • 在没有充分移除或引用用户可控输入中的 SQL 语法的情况下,生成的 SQL 查询可能将这些输入解释为 SQL 代码而非普通用户数据。

参考链接

  1. NVD 漏洞详情
  2. GitHub 修复提交
  3. Red Hat Bugzilla
  4. Ruby on Rails 安全公告
  5. Rails 3.1.0-rc6 发布公告

安全指标

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

漏洞标识符

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

源代码仓库

  • rails/rails

致谢

  • 分析师:tjuyuxinzhang

注意:此公告已经过编辑,完整历史记录可在相关页面查看。

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