【连载】数据库审计产品常见缺陷(1)-综述
随着信息化的发展,数据库安全问题成为当前政府和企业用户关注的焦点,数据库审计产品成为当前信息安全产品的新宠。
当前在市面上存在着几十种数据库审计产品,这些产品的来源大约有四种类型:
国内原先具有网络审计产品的厂商,在网络审计产品的基础上经过简单包装,推出的数据库审计产品,比如我国几大安全厂商推出的数据库审计产品;
国内厂商专门针对数据库通讯协议的特点,开发出专门的数据库审计产品,比如安华金和、思福迪、安恒、国都兴业和帕拉迪等;
国外的数据库审计产品,比如Imperva、Guardium等;
OEM第三方的数据库审计产品,OEM对象可能是国内的产品,也可能是国外的产品(比如Imperva或韩国的DBInsight)。
从国家的安全政策上,国外的数据库审计产品或OEM国外的数据库审计产品都存在安全隐患,不在本文的评论范围内。
在这里我们主要分析下国内厂商开发的数据库审计产品的常见缺陷,当然这些缺陷并不是每种产品都具备,读者若有兴趣且条件方便的话,可以进行有针对性的测试。
1、长SQL语句漏审
原因是长SQL语句(比如超过2K)被分配到了多个通讯包中,而相关产品对跨通讯包的协议解析并未进行精细化的处理,该错误会造成全部或局部漏审,极易被攻击者利用。
2、多语句无法有效分割
SQL Server这样的数据库支持多语句同时发送,语句间缺乏明确的分割标识;由于大多的数据库审计产品是基于正则表达式,无法有效分割SQL语句,造成SQL语句的审计解析错误,如无法正确捕获SQL语句的类型、操作对象等。
3、复杂语句对象解析错误
SQL语句由于要表达各种复杂的检索条件和统计分析情况,语法非常复杂,数据库系统需要借助Yacc&Lex这样的词法和语法解析工具进行语句解析。
但大多数数据库审计产品采用的是正则匹配技术,在语句中具有子查询、关联查询等情况时无法准确获得多层对象,特别是在SQL语句中使用别名的时候;这些缺陷往往会造成错误的数据库对象记录。
4、参数值与SQL语句匹配错误
为了提升SQL处理的效率,大多数应用软件会利用数据库编程的语句预编译(Prepare)、参数绑定(bind)机制,以实现高效处理。
这种机制本质上是通过句柄追踪机制完成的,大多数的数据库审计产品能够处理简单的预编译与参数绑定的情况;但当预编译与参数绑定达到几十条时,调用情况稍微复杂,就发生了大量的参数值与语句的错误搭配,从而造成大量错审。
5、错误的应答结果,特别是影响行数解析不正确
对于SQL操作是否成功,是数据库审计的基本需求,对数据库操作读取或影响了多少行是用户的实际需求。
但SQL操作成功与否的准确记录,需要仰仗SQL语句的合理切割和句柄的准确追踪及对返回结果集的完全解析,大多数数据库审计产品在多语句情况,或者通过FETCH操作批量获取等环节下,无法准确获得查询执行的正确性以及影响行数。
6:充满失真率的应用用户关联
市场上的数据库审计产品大多数都宣传支持三层关联审计,实现SQL语句与业务用户的关联。这种基于三层关联审计的技术,是通过http协议中的参数与SQL语句中的参数的匹配,以及时间的匹配来完成的,属于模糊匹配。
这种方法在http参数经过加工后或基于逻辑判断后再发出SQL语句,也即SQL语句的参数与http参数没有直接的匹配关系时将完全失效;在高并发时更是一个灾难。 这种方法的准确率往往很难超过80%。
7、未专业化的审计界面
这个问题主要是针对基于网络审计而发展来的数据库审计产品,这种产品由于在设计之初就不是专门面向数据库用户的,因此并未按照数据库的访问类别、会话追踪、数据库对象层次进行界面组织,造成这类产品的界面极其不易使用。
8、过度冗余的审计信息存储
很多应用系统会采用动态拼接SQL语句的方式来实现对数据库的访问;这会造成大量SQL语句语法形式相同而仅仅是SQL语句中的参数值不同的语句。当前的很多审计产品将这些语句进行重复地记录和存储,造成了审计效率的低下,存储设备的浪费,并会对SQL语句的分析和排查效率造成致命影响。
以上是对8类问题的简单总结,在后续章节中将对每个问题进行展开说明。
本文出自 “数据库安全” 博客,请务必保留此出处http://schina.blog.51cto.com/9734953/1630328
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。