数据库安全审计常见缺陷系列之(一)概述
作者:刘晓韬 发布时间:2016-08-16

随着信息化的发展,数据库安全问题成为当前政府和企事业单位用户关注的焦点,数据库审计产品已经成为当前信息安全产品的盛宠。

当前在市面上存在着几十种数据库审计产品,这些产品集中起来大约可分四种类型:

(1)在网络审计产品的基础上经过简单包装推出数据库审计产品的既有网络审计产品厂商,比如国内几大安全厂商推出的数据库审计产品,安全圈都知道,不再例举;

(2)针对数据库通讯协议的特点开发出专门的数据库审计产品的国内细分领域安全厂商,比如安华金和、思福迪、国都兴业、帕拉迪等;

(3)国外的数据库审计产品,比如Imperva、Guardium等;

(4)OEM第三方的数据库审计产品,OEM对象可能来自国内,也可能来自国外,比如Imperva或韩国的DBInsight。

随着国产化采购政策的推动,处于安全性的考虑,国外数据库审计产品,不在本文的评论范围内。安华金和作为国内专业的数据库安全厂商,为广大用户提供精准且性能佳的数据库审计产品,领先国内水平,总结国内厂商开发的数据库审计产品常见的八类缺陷。当然这些缺陷并不是每种产品都具备,读者若有兴趣且条件方便,可以进行有针对性的测试:

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语句的分析和排查效率造成致命影响。

安华金和数据库审计产品(DBAudit)可以有效避免以上8类缺陷,欢迎测试哦,后续篇章,我们将具体针对每类问题进行详尽介绍。