描述
攻击者利用一个弱点数据库访问层代码中生成一个对象关系映射(ORM)工具或方式的缺点,开发人员使用持久性框架注入自己对底层数据库执行SQL命令。这里的攻击类似于普通SQL注入,除了应用程序不使用JDBC直接跟数据库,而是它使用一个数据访问层由一个ORM工具或框架(如Hibernate)。虽然大多数由一个ORM工具生成的代码包含安全的访问方法,免疫SQL注入,有时候由于一些弱点在生成的代码中或由于开发人员未能正确使用生成的访问方法,SQL注入仍然是可能的。
攻击的可能性
典型的严重性
执行流程
探索
确定使用的持久性框架:攻击者试图确定使用持久性框架应用程序为了利用一个弱点在生成数据访问层代码或弱点,使用的数据访问层可能是开发人员。
技术 |
攻击者提供的输入应用程序试图诱导一个错误屏幕显示堆栈跟踪出的自动化数据访问层使用。或攻击者可能仅仅做一些猜测和假设,例如,使用Hibernate,工艺的攻击。 |
ORM注入漏洞的调查:攻击者注入ORM语法到用户可控的数据输入应用程序来确定它是可能的修改数据查询结构和内容。
利用
执行SQL注入通过生成的数据访问层:攻击者继续利用一个弱点在生成数据访问方法不正确分离控制平面和数据计划,或者更可能的是一种特定的方式,开发人员可能会滥用生成的代码,修改执行SQL查询的结构和/或注入全新的SQL查询。
技术 |
攻击者使用普通SQL注入技术,调整他们反映了数据访问层的类型生成框架所使用的应用程序。 |
先决条件
应用程序使用数据访问层由一个ORM工具或框架 |
应用程序使用用户提供的数据对数据库执行查询 |
之间的分离并不能确保数据平面和控制平面,通过开发人员错误或一个潜在的弱点在数据访问层的代码生成框架 |
技能要求
(级别:中等) 通用SQL注入知识技术和微妙的ORM框架是必要的 |
所需资源
后果
这个表指定不同的个体与攻击模式相关的后果。范围确定违反了安全属性,而影响了负面的技术影响,如果敌人成功的攻击。可能提供的信息如何可能的具体结果预计将看到列表中相对于其它后果。例如,可能有高可能性模式将被用来实现一定的影响,但较低的可能性,它将被利用来实现不同的影响。
范围 |
影响 |
可能性 |
完整性 |
修改数据 |
|
可用性 |
不可靠的执行 |
|
保密 |
读取数据 |
|
保密
访问控制
授权 |
获得特权 |
|
保密
完整性
可用性 |
执行未经授权的命令 |
|
缓解措施
记得了解如何使用ORM工具/框架生成的数据访问方法正确的方式将利用内置的安全机制的框架 |
确保保持最新的与安全有关的更新持久性框架中使用您的应用程序。 |
例子,实例
当使用Hibernate,可以使用session.find()方法来对数据库运行查询。这是一个重载的方法,提供设施来执行绑定提供的用户数据和地方持有人之间的静态定义的查询。不过,也可以使用session.find()方法不使用任何这些查询绑定过载,因此有效地连接用户提供的数据与其他SQL查询,导致SQL注入的可能性。虽然框架提供对SQL注入免疫机制使用方法,它也可以包含方法也不能幸免,可能选择的开发人员。 |
引用
内容的历史
提交 |
提交日期 |
提交者 |
组织 |
2014-06-23
(版本2.6) |
CAPEC内容团队 |
manbetx客户端首页 |
|
修改 |
修改日期 |
修饰符 |
组织 |
2017-08-04
(版本2.11) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Resources_Required |
2020-07-30
(版本3.3) |
CAPEC内容团队 |
manbetx客户端首页 |
更新描述 |
2021-06-24
(版本3.5) |
CAPEC内容团队 |
manbetx客户端首页 |
更新Related_Weaknesses |
|