一种针对数据库漏洞规则的快速检索方法与流程

文档序号:14390125阅读:758来源:国知局
一种针对数据库漏洞规则的快速检索方法与流程

本发明属于数据库安全技术领域,尤其是一种针对数据库漏洞规则的快速检索方法。



背景技术:

随着数据库的广泛使用和演进,数据库漏洞也被随之不断暴露、挖掘。而频繁的数据库版本升级,带来的成本相当昂贵。因此,将利用数据库漏洞的攻击行为定义出相应的防御规则,并针对这些数据库漏洞规则进行快速的检索,确认匹配的数据库漏洞规则,并进行审计、放行、拦截、阻断控制显得非常重要且有意义。这种数据库漏洞的防范机制既保证了用户数据的安全性,也会避免数据库升级带来的成本上的浪费和数据丢失或者出现异常的风险。但是,由于数据库漏洞规则很多,且每条规则都需要对多个数据库操作行为特征进行校验,因此逐条规则、逐个行为特征校验,会耗时很长,不能做到及时、快速的规则判定响应,极大地降低了该技术路线的可用性。



技术实现要素:

本发明的目地在于克服现有技术的不足,提出一种设计合理、速度快、安全可靠的针对数据库漏洞规则的快速检索方法。

本发明解决其技术问题是采取以下技术方案实现的:

一种针对数据库漏洞规则的快速检索方法,包括以下步骤:

步骤1、生成所有数据库漏洞规则及所有单一行为特征校验要求的去重结果和对应位矩阵;

步骤2、生成当前数据库在当前版本下所有启用规则的初始位矩阵;

步骤3、通过会话级的行为特征的校验结果及对应位运算,获得当前会话下可能命中规则的位矩阵;

步骤4、进行sql操作类型和sql关键对象信息的行为特征判定,获得该语句可能命中的规则集合;

步骤5、进行sql文本匹配和正则匹配,确定命中的规则;

步骤6、根据命中规则的规则类型,记录风险级别并执行控制动作;

步骤7、判断是否收到新的sql请求,是则跳至步骤4继续进行。

所述步骤1的具体实现方法为:将所有数据库漏洞规则所有需要校验的行为特征进行分组去重,提取出所有的单一行为特征的校验要求,为每个单一行为特征的校验要求生成一个以规则id为key值的位矩阵,矩阵中的某id所代表的位的值为1则表明如果该单一行为特征的校验结果为真,则可能命中该规则id代表的规则,矩阵中的某id所代表的位的值为0表示不可能命中。

所述步骤2是根据数据库的类型和版本信息生成一个以规则id为key值的初始位矩阵,该初始位矩阵代表在这个数据库下可能命中的数据库漏洞规则合集。

所述步骤3的具体实现方法为:在数据库连接建立后,对获得的数据库的如下会话信息:数据库用户名、模块名、应用名、会话状态、终端、操作系统用户、主机名逐一进行单一特征校验;记录所有单一特征校验结果为真的行为特征,并取得该行为特征在步骤1中所生成的位矩阵;根据规则里面的定义的内容,将对规则中的涉及到以上会话信息行为特征的校验结果的与、或运算转换为各个位矩阵的按位与、或计算;计算后的位矩阵再与步骤2中生成的初始位矩阵进行按位与操作,得到会话级别的位矩阵;该位矩阵中所有为1的位代表着该位所代表的规则id在这个会话里面可能被命中。

所述步骤4的具体实现方法为:在sql语句执行之后,根据执行的sql语句的语法解析结果,进行语句操作类型、语句关键对象的行为特征做校验,记录所有单一特征校验结果为真的校验元素在步骤1中所生成的位矩阵,并根据规则要求,进行各个位矩阵的与、或计算;计算后得到的结果再与步骤3中得到的会话级位矩阵进行按位与操作,得到一个该sql语句在该会话下可能命中的规则集合。

所述步骤5的具体实现方法为:将sql语句文本对步骤4得到的规则集合中的所有规则进行逐条、详细的文本内容进行包含判定和正则表达式特征判定,得到该sql语句确定命中的规则id。

所述步骤6的具体实现方法为:根据步骤5确定的命中的规则id的规则类型,记录设置的高、中、低、无风险级别,并进行相应的审计、放行、拦截、阻断控制动作。

本发明的优点和积极效果是:

本发明将数据库漏洞规则转换为多个单一行为特征校验结果的与、或运算,并为每个单一行为特征校验生成以规则id为key值的位矩阵。在进行规则检索时,根据行为特征是否会在该连接中再次发生变化的这一特性和校验的耗时多少进行分层次校验。每层校验后,保留剩余的可能命中的规则集合,用以规则id为key值的位矩阵记录。最终得到校验sql具体内容时获得确认命中的规则集合。并根据检索到的数据库漏洞规则的规则类型记录高、中、低、无风险,并进行审计、放行、拦截、阻断等控制动作,能够及时、快速地进行规则判定响应,提高了安全性能和实用性能。

附图说明

图1为本发明进行快速规则检索的流程。

图2为本发明所使用的单一行为特征和位矩阵的存储结构示意。

具体实施方式

以下结合附图对本发明实施例做进一步详述。

一种针对数据库漏洞规则的快速检索方法,如图1所示,包括以下步骤:

步骤1:生成所有数据库漏洞规则及所有单一行为特征校验要求的去重结果和对应位矩阵。

在本步骤中,将所有数据库漏洞规则所有需要校验的行为特征进行分组去重,提取出所有的单一行为特征的校验要求。为每个单一行为特征的校验要求生成一个以规则id为key值的位矩阵,矩阵中的某id所代表的位的值为1则表明如果该单一行为特征的校验结果为真,则可能命中该规则id代表的规则,为0表示不可能命中,其单一行为特征和位矩阵的存储结构如图2所示。

步骤2:生成当前数据库在当前版本下所有启用规则的初始位矩阵。

在本步骤中,根据数据库的类型和版本信息生成一个以规则id为key值的初始位矩阵,该初始位矩阵代表在这个数据库下可能命中的数据库漏洞规则合集。

步骤3:通过会话级的行为特征的校验结果及对应位运算,获得当前会话下可能命中规则的位矩阵。

本步骤是在数据库连接建立后,利用获得的数据库会话信息,包括:数据库用户名、模块名、应用名、会话状态、终端、操作系统用户、主机名等信息逐一进行单一特征校验。记录所有单一特征校验结果为真的行为特征,并取到该行为特征在步骤1中所生成的位矩阵。根据规则里面的定义的内容,将对规则中的涉及到以上会话信息行为特征的校验结果的与、或运算转换为各个位矩阵的按位与、或计算。计算后的位矩阵再与步骤2中生成的初始位矩阵进行按位与操作,得到会话级别的位矩阵。该位矩阵中所有为1的位代表着该位所代表的规则id在这个会话里面可能被命中。

步骤4:进行sql操作类型和sql关键对象信息的行为特征判定,获得该语句可能命中的规则集合。

本步骤是在sql语句执行之后,根据执行的sql语句的语法解析结果,进行语句操作类型、语句关键对象的这两个行为特征做校验,记录所有单一特征校验结果为真的校验元素在步骤1中所生成的位矩阵。并根据规则里面的要求,进行各个位矩阵的与、或计算。计算后得到的结果再与步骤3中得到的会话级位矩阵进行按位与操作,快速得到一个该sql语句在该会话下可能命中的规则集合。

步骤5:进行sql文本匹配和正则匹配,确定命中的规则。

在本步骤中,将sql语句文本对步骤4得到的规则集合中的所有规则进行逐条、详细的文本内容进行包含判定和正则表达式特征判定,得到该sql语句确定命中的规则id。

步骤6:根据命中规则的规则类型,记录风险级别并执行控制动作。

在本步骤中,根据步骤5确定的命中的规则id的规则类型,记录设置的高、中、低、无风险级别,并进行相应的审计、放行、拦截、阻断控制动作。

步骤7:判断是否收到新的sql请求,是则跳至步骤4继续进行。

需要强调的是,本发明所述的实施例是说明性的,而不是限定性的,因此本发明包括并不限于具体实施方式中所述的实施例,凡是由本领域技术人员根据本发明的技术方案得出的其他实施方式,同样属于本发明保护的范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1