数据库虚拟补丁防护方法与流程

文档序号:12596213阅读:364来源:国知局
数据库虚拟补丁防护方法与流程

本发明属于数据库安全领域,是一种数据库虚拟补丁防护方法。



背景技术:

数据库系统是信息系统中的基础平台,许多政府机构、军事部门、企业公司的关键业务系统都存储数据库中,如果数据库安全无法保证,其上的应用系统也会被非法访问或破坏。尽管目前成熟的商用数据库管理系都具有诸如身份认证、访问控制、审计等安全功能,为数据库安全提供了一定的安全保障,但是在数据库安全方面还存在以下问题:

1.数据库漏洞呈现不断增多态势。随着用户对数据库管理系统功能需求的提升,数据库管理系统的规模变得越来越庞大,数据库管理系统出现安全漏洞的风险在不断增加,如对这些漏洞置之不理,数据库面临核心数据被泄漏的风险。

2.草率升级数据库可能导致应用异常。数据库升级、打补丁需要数据库管理员、应用系统管理员等多方的协作,若未充分考虑数据库升级、打补丁过程中可能导致的系统变化,则数据库系统升级后有可能导致应用无法正常使用。

3.数据库补丁无法防止预设后门。“棱镜门”事件暴露出了国外商用数据库系统存在的严重安全隐患,国外数据库厂商、情报部门可以利用数据库管理系统自身的后门,对数据库中的数据进行监视和窃取,数据库系统设计过程中预置了后门,附属其上的安全保密机制便形同虚设。

因此,数据库管理员面临着这样的困境:数据库漏洞非补不可,补漏洞又面临影响应用的风险,但无论怎样都无法从根本上防范数据 库后门的无奈局面。



技术实现要素:

本发明的目的在于提供一种数据库虚拟补丁防护方法,用于解决上述现有技术的问题。

本发明的数据库虚拟补丁防护方法,其中,包括:接收数据库厂商发布的补丁信息;对打补丁前后的数据库进行机器指令逆向分析,将可执行文件中的二进制机器指令,通过逆向还原为汇编语言代码;对汇编语言代码进行分析,将整个程序表示为不同的函数和函数之间相互调用关系,将一个二进制文件就转换为一张有向图,通过分析得到二进制文件反汇编后的调用关系和函数控制流图,通过计算控制流图中基本块数量、跳转边数以及调用其它函数个数,并生成该函数的签名,该函数的签名对应基本块数量、跳转边数以及调用其它函数个数;根据函数签名对函数作为配对,根据配对函数和非配对函数,通过对非配对函数进行检查,定位引发安全漏洞的代码;基于漏洞信息以及定位的引发安全漏洞的代码产生有效的攻击图,进行虚拟补丁防护规则构建。

根据本发明的数据库虚拟补丁防护方法的一实施例,其中,根据函数签名选取相同或相似的函数作为配对的条件包括:满足条件(1),同时满足条件(2)或条件(3):将数据库打补丁前后分别进行二进制逆向后,再分块,形成n个函数,打补丁前的分块结果为函数集合,打补丁后的分块结果为函数集合;条件(1):存在第一函数属于打补丁前的函数集合,存在第二函数属于打补丁后的函数集合,且第一函数与第二函数签名相同;条件(2):条件(1)中打补丁前的函数集合中,不存在第一函数外的其他函数签名与第二函数签名相同;条件(3):条件(1)中打补丁后的函数集合中,不存在第二函数外的其他函数签名与第一函数签名相同;;满足条件(1),同时满足条件(2) 或条件(3)的函数为配对函数,通过对非配对函数进行检查,定位引发安全漏洞的代码。

根据本发明的数据库虚拟补丁防护方法的一实施例,其中,基于漏洞信息产生有效的攻击图,进行虚拟补丁防护规则构建包括:以开放漏洞数据库以及根据定位的引发安全漏洞的代码得到的漏洞信息为基础建立漏洞知识库;将数据库的目标环境信息进行预处理,将环境信息按照谓词名称、属性进行分类,形成多个子目标环境项;将目标环境存储在一个树形数据结构中;根据目标环境将漏洞知识库中的攻击模式实例化为攻击图。

根据本发明的数据库虚拟补丁防护方法的一实施例,其中,该树形数据结构包含4层节点:根节点、主机地址节点、谓词名称节点以及属性节点。

综上,本发明为解决数据库防护中的漏洞管理修复过程所面临的各种问题,提出了一种数据库虚拟补丁防护方法具有以下优点:

1.能够以CVE发布的数据库漏洞、数据库厂商发布的官方补丁信息为依据,分析漏洞的产生机理,掌握漏洞利用机制并还原对应的攻击模式;

2.能够对攻击路径进行建模,并且实现了将数据库访问行为模式与模型的快速匹配;

3.能够根据预设规则,对特定的行为模式进行阻断,达到防止数据库被攻击的效果。

附图说明

图1所示为本发明数据库虚拟补丁防护模块图;

图2所示为数据库虚拟补丁防护模块工作流程图;

图3所示为打补丁前后的数据库的对比分析流程图;

图4所示为数据库的函数结构图;

图5所示为函数的子函数控制流图;

图6所示为攻击建模的流程图;

图7所示为目标环境信息的数据结构图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

图1所示为本发明数据库虚拟补丁防护模块图,如图1所示,数据库虚拟补丁防护模块包括:协议解析模块1、访问行为过滤模块2、请求转发模块3、规则库4、攻击分析模块5、规则录入模块6、攻击分析模块7、补丁分析模块8以及配置管理模块9。

参考图1,协议解析模块1用于进行数据库服务器映射以及数据库协议解析等。访问行为过滤模块2用于进行对访问请求中的SQL语句还原,并基于规则库的特征规则,对数据库访问请求进行过滤,屏蔽针对数据库漏洞的攻击行为及用户定义的异常和误用行为。请求转发模块3用于进行访问请求重组和转发等功能。补丁分析模块8用于以数据库厂商发布的补丁信息为输入,定位补丁对应的数据库缺陷代码。攻击分析模块7用于基于权威漏洞库发布的漏洞信息或补丁分析的结果,分析缺陷代码的利用方式,获得对应的攻击模式,并抽象成访问控制规则录入规则库4。规则录入模块6用于根据需求,将用户自定义访问规则录入规则库4。配置管理模块9用于对数据库虚拟补丁防护模块的运行参数进行配置,记录设备运行日志及审计日志信息。规则库4用于存放各类漏洞利用模式、攻击模式以及异常模式等规则信息。

图2所示为数据库虚拟补丁防护模块工作流程图,参考图1以及图2,数据库虚拟补丁防护方法主要包括:

1.将数据库厂商发布的补丁信息输入数据库虚拟补丁防护模块;

2.通过补丁对比分析方法,对补丁信息进行分析,定位补丁对应的漏洞机制;

3.根据分析得到的漏洞机制或由CVE等直接发布的漏洞还原攻击方式,并进行攻击建模;

4.根据攻击路径模型生成数据库防护规则,对目标数据库进行防护。

图3所示为打补丁前后的数据库的对比分析流程图,图4所示为数据库的函数结构图,图5所示为函数的子函数控制流图,对于本发明数据库虚拟补丁防护方法具体的实施利,包括:

接收数据库厂商发布的补丁信息11;

对打补丁前后的数据库14进行机器指令逆向分析,将可执行文件中的二进制机器指令,通过逆向还原为汇编语言代码;

对汇编代码进行分析,将整个程序表示为不同的函数和函数之间相互调用关系,将一个二进制文件就转换为一张有向图,如图3所示;通过分析得到二进制文件反汇编后的调用关系和函数控制流图,如图4所示;通过计算控制流图中基本块数量,每个基本块为一函数的子函数例如函数A中的基本块a-g的数量为6,如图4所示;跳转边数,即各子函数之间调用关系之和,例如基本块a-g之间共存在7个调用关系,如图4所示;以及调用其它函数个数,例如函数A中所调用的不属于函数A的函数的数量。并生成该函数的签名。可以使用一个三维向量S(i)=(αi,βi,γi)作为函数签名,其中,αi,表示对应控制流图中的基本块数;βi表示对应控制流图中的边数,单个函数调用和被调用的次数;γi表示该调用其它函数个数。

根据函数签名选取可能相同或相似的函数作为配对,依次对各匹配的函数对进行内部的基本块比对,确定函数相似度。本发明中判断函数ai、bj具有唯一相同签名是指同时满足条件(1),并满足条件(2)或条件(3):

将数据库打补丁前后分别进行二进制逆向后,再分块,形成n个函数,打补丁前的分块结果为函数集合(a1….an),打补丁后的分块 结果为函数集合(b1…..bn)。

条件(1):存在函数ai和bj分别归属补丁前后2个函数集合,且两者签名相同;

条件(2):存在函数ai所在的函数集合中,不存在其他函数签名与bj签名相同;

条件(3):存在函数bj所在的函数集合中,不存在其他函数签名与ai签名相同。

补丁前后的二进制可执行文件在比对之后,可分为两类:具有唯一相同签名配对函数和非配对函数,通过对非配对函数进行检查,即可定位引发安全漏洞的代码,并对非配对函数进行脆弱性表注。

补丁比对方法是通过对比打补丁前后可执行文件之间的区别,迅速定位缺陷代码,以便于漏洞机制分析及攻击路径还原。由于受到编译器优化、逻辑地址等各个方面的影响,对数据库补丁进行字节比对,或对反汇编出来的汇编代码进行简单的文本比对,都无法获得很好的效果。为解决该问题,采用结构化对比方式,通过提取反汇编代码中的函数签名,以汇编函数为基本研究单位开展比对工作。

本发明的补丁对比技术基本思路是:提取补丁前后可数据库中函数的标志性特征信息作为函数签名,并对函数签名进行比较;具有唯一相同签名的函数在配对后,被认为是相同的。

方法实质是将整个数据库视为一个图,将函数作为二进制文件的一个“子图”,将整个二进制文件就转化为一个结构图,两个二进制文件的比对也就转化为两个图之间的比较,比较两个函数之间的签名。二进制文件的结构化比对方法从结构层面考虑文件内容,两段相同代码生成的文件在文本内容可能不同的情况下,其结构通常会保持一致。

图6所示为攻击建模的流程图,参考图1以及图6,根据分析得到的漏洞机制或由CVE等直接发布的漏洞还原攻击方式,并进行攻击建 模,包括:

基于漏洞信息12产生有效的攻击图,进而虚拟补丁防护规则构建,可以采用基于逻辑的方式对漏洞进行建模和分析并生成攻击图,进而实现对攻击模式的获取。

利用攻击图方法进行漏洞利用模式分析能够清晰描绘攻击者的攻击轨迹,便于理解以及相关防护规则制定,但是由于数据库涉及攻击面非常广泛,一般攻击图构建方法容易陷入状态爆炸的问题。为解决该问题,可以采用的攻击图分析中增加了目标环境预处理技术,减少对非不要、不可达攻击目标环境属性的搜索,大幅提升了攻击图分析性能。攻击图引擎,结合攻击数据库,对目标环境信息数据结构进行遍历,寻找以一起点非法达到另一节点。

图7所示为目标环境信息数据结构图,参考图7,目标环境信息数据结构攻击建模包括:

1.构建知识库。以CVE等权威机构发布的开放漏洞数据库以及由数据库厂商发布的补丁信息分析得到的漏洞信息为基础建立漏洞知识库,漏洞知识库为攻击图生成提供推理规则。

2.目标环境预处理。将数据库相关的主机信息、服务信息、配置信息等目标环境信息进行预处理,将环境信息按照谓词名称(提供的服务类型)、属性进行分类,形成若干子目标环境项。本发明采用的目标环境预处理算法将目标环境存储在一个树形数据结构中,如图7所示该树包含4层节点:根节点、主机地址节点、谓词名称节点、属性节点。

目标环境于预处理算法描述如下:

Input:存储目标环境中属性的Tree;目标环境集合中的初始属性f

Output:插入属性f后的Tree

I=IPValue(f);

P=PredicateName(f);

If Node(I)S-Nodes(Tree.Root)Then

S-Nodes(Tree.Root)=S-Nodes(Tree.Root)∪{Node(I)};

S-Nodes(Node(I))=S-Nodes(Node(I))∪{Node(P)};

S-Nodes(Node(P))={Node(f)};

Else If Node(P)S-Nodes(Node(I))Then

S-Nodes(Node(I))=S-Nodes(Node(I))∪{Node(P)};

S-Nodes(Node(P))={Node(f)};

Else If Node(f)S-Nodes(Node(P))Then

S-Nodes(Node(P))=S-Nodes(Node(P))∪{Node(f)};

Return Tree

该算法的输入时存储目标环境属性的Tree和目标环境集合中的初始属性f,输出为插入属性f后的Tree,该算法的作用是将属性f以合适的位置插入树Tree中。算法首先判断属性f的HostID类型的参数值是否等于Tree的根节点的某个后继节点的标识(即第二层节点的标识),如不存在,则生成具有该属性f的HostID类型的参数值标识的节点i,作为根节点的后继节点,然后生成具有该属性f的谓词名称标识节点j,作为节点i的后继节点,然后将该属性f作为节点j的后继节点;如果该属性f的HostID类型的参数等于Tree的根节点的某个后继节点k的标识,那么在判断属性f的谓词名称是否等于节点k的某个后继节点的标识,如果不存在,则生成具有该属性f的谓词名称标识的节点m,作为节点k的后继节点,如果存在这样的后继节点n,那么就将该属性f作为节点n的后继节点。

3.构造攻击图。将目标环境和漏洞知识库输入攻击图构造引擎,根据目标环境将漏洞知识库中的攻击模式实例化为攻击图。

综上,本发明的数据库虚拟补丁防护方法,能够以CVE等发布的官方数据库漏洞信息及数据库厂商发布的补丁信息为依据生成虚拟 补丁,虚拟补丁无需在数据库端进行部署,只需要以透明方式部署于串接在待防护的数据库服务器之前飞数据库虚拟补丁防护模块上,即可实现对数据库访问行为的监测,发现并阻断利用数据库漏洞、后门或利用管理员特权非法获取数据库信息的行为,实现对数据库零改动条件下对数据库漏洞、后门的封堵。

本发明主要实现的效果包括:

1.能够以CVE发布的数据库漏洞、数据库厂商发布的官方补丁信息为依据,分析漏洞的产生机理,掌握漏洞利用机制并还原对应的攻击模式;

2.能够对攻击路径进行建模,并且实现了将数据库访问行为模式与模型的快速匹配;

3.能够根据预设规则,对特定的行为模式进行阻断,达到防止数据库被攻击的效果。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

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