ActiveRecord SQL注入漏洞剖析与防范

本文详细分析了Ruby on Rails框架中ActiveRecord组件存在的SQL注入漏洞,该漏洞允许攻击者通过特制的列名执行任意SQL命令,影响了2.3.13之前、3.0.10之前以及3.1.0.rc5之前的多个版本。

漏洞详情

包名: bundler / 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框架2.3.13之前版本、3.0.x的3.0.10之前版本以及3.1.x的3.1.0.rc5之前版本中,ActiveRecord适配器的quote_table_name方法存在多个SQL注入漏洞。远程攻击者能够通过特制的列名执行任意SQL命令。

漏洞位置: activerecord/lib/active_record/connection_adapters/

参考资料

发布信息

  • 国家漏洞数据库发布: 2011年8月29日
  • GitHub Advisory数据库发布: 2017年10月24日
  • 审核: 2020年6月16日
  • 最后更新: 2025年11月3日

严重性

高危

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

弱点

CWE-89: SQL命令中使用的特殊元素中和不当(SQL注入) 该产品使用来自上游组件的外部影响输入构建全部或部分SQL命令,但在将SQL命令发送到下游组件时,未能正确中和或错误地中和可能修改预期SQL命令的特殊元素。在MITRE上了解更多。

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

源代码: rails/rails

致谢: tjuyuxinzhang (分析师)

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