ActiveRecord SQL注入漏洞分析
漏洞概述
CVE-2011-2930是一个影响Ruby on Rails框架ActiveRecord组件的高危SQL注入漏洞。该漏洞存在于多个版本的Rails框架中,允许远程攻击者通过特制的列名执行任意SQL命令。
受影响版本
受影响的版本范围:
-
= 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
技术细节
漏洞位置
该SQL注入漏洞存在于ActiveRecord适配器的quote_table_name方法中,具体位置在:
|
|
漏洞原理
攻击者能够通过精心构造的列名,绕过输入验证和转义机制,在生成的SQL命令中注入恶意代码。这是由于quote_table_name方法未能正确中和特殊字符,导致下游SQL查询被篡改。
安全弱点分类
CWE-89: SQL命令中使用的特殊元素中和不当(SQL注入)
产品在构建SQL命令时使用了来自上游组件的外部影响输入,但未能正确中和或错误地中和了特殊元素,当SQL命令发送到下游组件时可能修改预期的SQL命令。
参考资源
- NVD漏洞数据库:https://nvd.nist.gov/vuln/detail/CVE-2011-2930
- Rails官方修复提交:rails/rails@8a39f41
- Ruby安全公告数据库:https://github.com/rubysec/ruby-advisory-db/blob/master/gems/activerecord/CVE-2011-2930.yml
- 多个安全邮件列表讨论记录
漏洞评分
严重等级: 高危
EPSS评分: 0.955%(第76百分位)
该评分估计此漏洞在未来30天内被利用的概率。