基于Petri网的密码误用漏洞检测方法及系统转让专利

申请号 : CN201711449476.3

文献号 : CN108123956B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 康绯光焱舒辉熊小兵林昊徐旭吴昊杜三

申请人 : 中国人民解放军战略支援部队信息工程大学

摘要 :

本发明属于网络信息安全技术领域,特别涉及一种基于Petri网的密码误用漏洞检测方法及系统,该方法包含如下内容:根据已知密钥安全漏洞生成密钥安全性漏洞检测模型并建立用于存储漏洞检测规则的检测规则库;提取加密应用程序中的API运行信息;对密码API序列进行污点分析,生成着色Petri网描述文件;结合漏洞检测规则及着色Petri网描述文件,进行密码误用漏洞检测。本发明在分析密码API函数调用方法的基础上,可借助动态二进制插桩方法,实现对API相关函数及其参数的运行时信息进行自动跟踪、监控与记录,可借助二进制分析识别不同密码函数之间的参数关联关系,大大提高检测效率,针对性强,识别率高,对网络信息安全技术具有重要的指导意义。

权利要求 :

1.一种基于Petri网的密码误用漏洞检测方法,其特征在于,包含如下内容:

A)、根据已知密钥安全漏洞生成漏洞检测模型并建立用于存储漏洞检测规则的检测规则库;

B)、提取加密应用程序中的API运行信息,API运行信息至少包含函数名称、函数调用关系、函数参数和函数属性,生成应用程序执行的密码API序列;

C)、对密码API序列进行污点分析,生成着色Petri网描述数据;

D)、分析Petri网描述数据中不同库所的token属性信息;

E)、利用漏洞检测规则,在Petri网分析结果的基础上进行密码误用漏洞检测;

A)中生成漏洞检测模型并建立用于存储漏洞检测规则的检测规则库,包含如下内容:

借助密码相关数据Cdata的定义,分析密码函数参数间的数值匹配和污点匹配关系,定义漏洞触发条件和参数关联关系,构成密码误用漏洞检测规则,形成检测规则库;

C)中对密码API序列进行污点分析生成着色Petri网描述数据,包含如下内容:

首先,利用污点分析工具分析密码API序列中不同API之间的参数关联关系,将密码API序列中的一个API标记为污点,进行前后两个方向的污点分析,当不同API的函数参数间存在污点关系,则标记为污点匹配,当函数参数间存在数据相等关系,则标记为数值匹配;

然后,根据API及其参数匹配关系,生成着色Petri网描述数据,该描述数据内容如下:

对于每一个API,设置一个库所;API的输入和输出参数分别对应不同的迁移,库所和迁移之间的弧中:输入参数对应出弧,输出参数对应入弧;当输入输出参数间出现匹配关系时,将其对应的迁移进行合并;将参数传递表示为token,并根据参数的Cdata属性定义token的颜色。

2.根据权利要求1所述的基于Petri网的密码误用漏洞检测方法,其特征在于,A)中,Cdata表示为四元组,该四元组中的变量包含数据内容、数据长度属性、数据随机性属性和数据来源属性;数值匹配表示两个Cdata的数据内容存在k字节以上的相同部分,k为自定义阈值,污点匹配表示两个Cdata的污点关联数据中存在数值匹配关系;漏洞检测规则分为原子规则和复合规则,原子规则表示为二元组,该二元组变量包含漏洞触发条件和参数关联关系,复合规则由若干原子规则通过参数关联关系连接而成;漏洞触发条件包括函数名称,以及函数参数所需满足的Cdata属性;参数关联关系表示为三元组,该三元组变量包含源关联对象、目标函数名称和目标函数关联对象。

3.根据权利要求2所述的基于Petri网的密码误用漏洞检测方法,其特征在于,B)中利用动态二进制插桩技术提取加密应用程序中的API信息,在提取加密应用程序中的API运行信息前,首先对加密应用程序中涉及到的函数名称及函数参数,分别记录为密码函数知识库和函数参数知识库,用于动态二进制插桩。

4.根据权利要求3所述的基于Petri网的密码误用漏洞检测方法,其特征在于,B)中提取加密应用程序中的API运行信息,包含如下内容:根据密码函数知识库和函数参数知识库,结合动态插桩,监控加密应用程序调用API信息的函数过程中的动态信息,该动态信息至少包含指令、内存和寄存器,并提取动态数据,该动态数据包含API名称、返回值和输入输出参数。

5.根据权利要求1所述的基于Petri网的密码误用漏洞检测方法,其特征在于,D)中借助Petri网分析工具,对迁移过程中token颜色的变化,以及不同颜色token在各库所的可达性进行分析。

6.根据权利要求5所述的基于Petri网的密码误用漏洞检测方法,其特征在于,E)中密码误用漏洞检测,具体包含如下内容:首先,将漏洞检测规则集合映射到xml规则描述文件中,得到检测规则库;其次,参照检测规则库通过漏洞检测规则算法对反应加解密过程的着色Petri网进行密码误用漏洞的识别和定位。

7.根据权利要求6所述的基于Petri网的密码误用漏洞检测方法,其特征在于,参照检测规则库通过漏洞检测规则算法对反映加解密过程的着色Petri网进行密码误用漏洞的识别和定位,包含如下步骤:a)对于着色Petri网描述数据,根据检测规则R进行检查,如果R是原子规则,则执行b);如果R是复合规则,则执行c);b)首先,判断R中函数名称对应库所在着色Petri网中是否存在,若存在,检查漏洞触发条件是否匹配,若两者均匹配,说明满足此安全性缺陷检测的原子规则,输出漏洞信息,然后转到a)进入下一次检查;若函数名称不存在,则直接转到a)进行下一次检查;c)从复合规则中依次取出一条原子规则,进行原子规则的检查,如果匹配,则执行d),否则转到a)进入下一次检查;d)检查此条原子规则的参数关联关系,如果参数关联关系非空,则根据参数关联关系从加解密过程信息中搜索与之匹配的关联信息,如果找到关联信息,则以该关联信息为输入转到c)进行复合规则的下一条原子规则检查,如果未找到关联信息,则表明复合规则检查不通过,转到a)进入下一次检查,如果参数关联关系为空,则表明已完成复合规则的检查,输出漏洞信息,转到a)进入下一次检查。

8.一种基于Petri网的密码误用漏洞检测系统,其特征在于,基于权利要求1所述的基于Petri网的密码误用漏洞检测方法实现,包含如下内容:检测规则建立模块、API信息提取模块和漏洞检测模块,其中,检测规则建立模块,用于生成面向漏洞的检测规则集合,检测规则结合中的每个漏洞检测规则依照密钥密码误用漏洞检测模型进行描述;

API信息提取模块,用于借助动态二进制插桩和污点分析技术提取密码API运行时的函数名称、函数参数及不同API之间的参数关联关系,并生成Petri网描述数据;

漏洞检测模块,用于调用Petri网分析工具,对Petri网描述数据进行分析,并与检测规则建立模块中的漏洞检测规则进行匹配,完成对密码误用漏洞的识别和定位。

说明书 :

基于Petri网的密码误用漏洞检测方法及系统

技术领域

[0001] 本发明属于网络信息安全技术领域,特别涉及一种基于Petri网的密码误用漏洞检测方法及系统。

背景技术

[0002] 随着信息安全和密码技术的发展,越来越多的应用程序采用加密手段来保护数据安全。尽管密码算法的原始设计通常经过专业的分析与测试,其自身的安全性得到一定保证,但在密码算法的实际应用与实现过程中,开发者需要自行选择合适的参数、配置、策略,并考虑性能的优化,而这些实现步骤中的任何环节出错都可能破坏密码算法自身提供的安全性保护,从而造成相应的漏洞。麻省理工学院对从2011年1月到2014年5月CVE漏洞信息库中的269个与密码相关的漏洞的统计研究显示:由于密码算法本身设计和密码算法库实现缺陷所造成的漏洞仅占漏洞总数的17%;而其余83%的漏洞是由于在单个软件的加解密过程实现中,软件开发者对密码算法的不当使用所造成的,包括密码算法实现中的逻辑错误、弱密钥与固定常数密钥、不恰当的消息填充方式和加解密模式选择等,统称为“密码误用漏洞”。而在移动设备软件中,上述问题更加突出,Manuel Egele等人对Google Play上的11748款安卓应用进行测试,结果发现88%样本的加解密过程存在安全缺陷,包括分组密码加密模式使用不当;使用固定常数密钥和常数盐值;基于口令的加密模式中迭代次数不足;
使用静态种子产生随机数等等。目前,针对此类漏洞的检测主要通过两种方法:一是逆向分析方法,针对具体的加密应用程序样本,分析者基于其个人经验,综合利用反汇编、二进制分析、软件动态调试等逆向分析方法,围绕样本的加解密过程进行静态和动态分析,发现潜在的密码误用漏洞。此类方法是应用程序安全性分析的基本方法,应用较为广泛,但对分析人员的水平能力有较高要求,分析效率不高;二是漏洞挖掘方法,将密码误用漏洞视为普通软件漏洞中的一类,借助符号执行、污点分析和Fuzzing测试等漏洞挖掘技术,对此类漏洞进行检测。从安全性检测的对象来看,应用程序中的密码算法的实现方式主要分为两种,一是由开发人员自行编写密码算法的代码;二是直接调用现有的通用密码算法函数库,如CryptoAPI、OpenSSL等。由于密码算法的设计实现专业性强,因此对于非密码专业的程序开发人员而言,通常多使用第二种方法来实现相关的安全模块,因此以CryptoAPI、OpenSSL等为代表的密码库函数广泛应用于各种应用中。因此,对于密码误用漏洞检测而言,应特别关注CryptoAPI等密码库函数在调用过程中可能出现的漏洞。目前,针对密码误用漏洞的两种检测方法都在一定程度上存在问题:1)对于逆向分析方法而言,尽管有多种逆向分析工具可供分析者使用,但这些工具本身并不能提供关于漏洞检测的直接结论,而需要依赖人工对每个目标样本的逆向结果进行分析并最终得出结论,结论的正确性严重依赖分析者的技能与经验,且需要耗费大量时间和精力,难以对批量样本进行分析。2)对于漏洞挖掘方法而言,尽管自动化程度较高,能够实现对批量样本的自动化分析,但由于软件漏洞挖掘的一般方法通常较少考虑密码学漏洞独有的规律和特点,因此在密码误用漏洞的检测方面缺乏针对性,效果往往并不理想。

发明内容

[0003] 针对现有技术中的不足,本发明提供一种基于Petri网的密码误用漏洞检测方法及系统,实现对API相关函数及其参数的运行时信息进行自动跟踪、监控与记录,摆脱传统方法对于人工经验的依赖,同时大大提高检测效率。
[0004] 按照本发明所提供的设计方案,一种基于Petri网的密码误用漏洞检测方法,包含如下内容:
[0005] A)、根据已知密钥安全漏洞生成密钥密码误用漏洞检测模型并建立用于存储漏洞检测规则的检测规则库;
[0006] B)、提取加密应用程序中的API运行信息,API运行信息至少包含函数名称、函数调用关系、函数参数和函数属性,生成应用程序执行的密码API序列;
[0007] C)、对密码API序列进行污点分析,生成着色Petri网描述数据;
[0008] D)、利用Petri网分析工具分析Petri网描述数据中不同库所的token属性信息;
[0009] E)、利用漏洞检测规则,在Petri网分析结果的基础上进行密码误用漏洞检测。
[0010] 上述的,A)中生成密钥密码误用漏洞检测模型并建立用于存储漏洞检测规则的检测规则库,包含如下内容:通过Cdata数据、数值匹配、污点匹配、漏洞检测规则、漏洞触发条件和参数关联关系,构建密钥密码误用漏洞检测模型和检测规则库。
[0011] 优选的,A)中,Cdata数据表示为四元组,该四元组中的变量包含数据内容、数据长度、数据随机性和数据来源/去向;数值匹配表示两个Cdata数据的数据内容存在k字节以上的相同部分,污点匹配表示两个Cdata数据的污点关联数据存在数值匹配;漏洞检测规则分为原子规则和复合规则,原子规则表示为二元组,该二元组变量包含漏洞触发条件和参数关联关系,复合规则由若干原子规则通过参数关联关系连接而成;漏洞触发条件包括函数名称,以及函数参数所需满足的触发条件;参数关联关系表示为三元组,该三元组变量包含源关联对象、目标函数名称和目标函数关联对象。
[0012] 上述的,B)中利用动态二进制插桩技术提取加密应用程序中的API信息,在提取加密应用程序中的API运行信息前,首先对加密应用程序中涉及到的函数名称及函数参数,分别记录为密码函数知识库和函数参数知识库,用于动态二进制插桩。
[0013] 优选的,B)中提取加密应用程序中的API运行信息,包含如下内容:
[0014] 首先,根据密码函数知识库和函数参数知识库,结合动态插桩,监控加密应用程序调用API信息的函数过程中的动态信息,该动态信息至少包含指令、内存和寄存器,并提取动态数据,该动态数据包含API名称、返回值和输入输出参数;
[0015] 优选的,C)中对密码API序列进行污点分析生成着色Petri网描述数据,包含如下内容:
[0016] 首先,利用污点分析工具分析密码API序列中不同API之间的参数关联关系,将密码API序列中的一个API标记为污点,进行前后两个方向的污点分析,当不同API的函数参数间存在污点关系,则标记为污点匹配,当函数参数间存在数据相等关系,则标记为数值匹配;
[0017] 然后,根据API及其参数匹配关系,生成着色Petri网描述数据,该描述数据内容如下:对于每一个API,设置一个库所;API的输入和输出参数分别对应不同的迁移,库所和迁移之间的弧中:输入参数对应出弧,输出参数对应入弧;当输入输出参数间出现匹配关系时,将其对应的迁移进行合并。将数据表示为token,并根据数据属性定义token的颜色。
[0018] 上述的,D)中借助Petri网分析工具,对反映加解密过程的着色Petri网进行分析,包括迁移过程中token颜色的变化,以及不同颜色token在各库所的可达性等。
[0019] 上述的,E)中密码误用漏洞检测,具体包含如下内容:首先,将漏洞检测规则集合映射到xml规则描述文件中,得到检测规则库;参照检测规则库通过漏洞检测规则算法对反映加解密过程的着色Petri网进行密码误用漏洞的识别和定位。
[0020] 更进一步的,参照检测规则库通过漏洞检测规则算法对着色Petri网进行密码误用漏洞的识别和定位,包含如下步骤:a)对于着色Petri网描述数据,根据检测规则R进行检查,如果R是原子规则,则执行b);如果R是复合规则,则执行c);b)首先,判断函数名称是否存在,若存在,检查漏洞触发条件是否匹配,若两者均匹配,说明满足此安全性缺陷检测的原子规则,输出漏洞信息,然后转到a)进入下一次检查,如果不匹配,则直接转到a)进行下一次检查;c)从复合规则中依次取出一条原子规则,进行原子规则的检查,如果匹配,则执行d),否则转到a)进入下一次检查;d)检查此条原子规则的参数关联关系,如果参数关联关系非空,则根据参数关联关系从加解密过程信息中搜索与之匹配的关联信息,如果找到关联信息,则以该关联信息为输入转到c)进行复合规则的下一条原子规则检查,如果未找到关联信息,则表明复合规则检查不通过,转到a)进入下一次检查,如果参数关联关系为空,则表明已完成复合规则的检查,输出漏洞信息,转到a)进入下一次检查。
[0021] 一种基于Petri网的密码误用漏洞检测系统,包含如下内容:检测规则建立模块、API信息提取模块和漏洞检测模块,其中,
[0022] 检测规则建立模块,用于生成面向漏洞的检测规则集合,检测规则结合中的每个漏洞检测规则依照密钥密码误用漏洞检测模型进行描述;
[0023] API信息提取模块,用于借助动态二进制插桩和污点分析技术提取密码API运行时的函数名称、函数参数及不同API之间的参数关联关系,并生成着色Petri网描述数据;
[0024] 漏洞检测模块,用于调用Petri网分析工具,对反映加解密过程的着色Petri网进行分析,并与检测规则建立模块中的漏洞检测规则进行匹配,完成对密码误用漏洞的识别和定位。
[0025] 本发明的有益效果:
[0026] 1、本发明中在分析密码API函数调用方法的基础上,借助动态二进制插桩方法,可实现对API相关函数及其参数的运行时信息进行自动跟踪、监控与记录,以此为基础,借助二进制分析识别不同密码函数之间的参数关联关系,摆脱了传统方法对于人工经验的依赖,同时大大提高检测效率。
[0027] 2、本发明相对于现有技术中的漏洞检测方法,通过本发明的技术方案能够极大地提高识别和发现漏洞的效率,其中,漏洞检测规则具有良好的通用性和扩展性,不局限于当前已知密码漏洞的识别,还可通过添加规则库适用于未来新挖掘漏洞的识别;检测规则与漏洞检测算法的设计建立在对密钥相关漏洞特点的深入分析基础上,针对性强,识别率高,对网络信息安全技术具有重要的指导意义。附图说明:
[0028] 图1为实施例中的基于Petri网的密码误用漏洞检测方法流程图;
[0029] 图2为实施例中的系统框图;
[0030] 图3为实施例中的系统原理图;
[0031] 图4为实施例中的API信息提取模块原理图。具体实施方式:
[0032] 为使本发明的目的、技术方案和优点更加清楚、明白,下面结合附图和技术方案对本发明作进一步详细的说明。
[0033] 针对现有技术中逆向分析方法中不能提供关于漏洞检测的直接结论,而需要依赖人工对每个目标样本的逆向结果进行分析并最终得出结论,结论的正确性严重依赖分析者的技能与经验,且需要耗费大量时间和精力,难以对批量样本进行分析;及漏洞挖掘方法中,由于软件漏洞挖掘的一般方法通常较少考虑密码学漏洞独有的规律和特点,因此在密码误用漏洞的检测方面缺乏针对性,效果往往并不理想,等情形,本发明实施例提供一种基于Petri网的密码误用漏洞检测方法,参见图1所示,包含如下内容:
[0034] 101)、根据已知密钥安全漏洞生成密钥密码误用漏洞检测模型并建立用于存储漏洞检测规则的检测规则库;
[0035] 102)、提取加密应用程序中的API运行信息,API运行信息至少包含函数名称、函数调用关系、函数参数和函数属性,生成应用程序执行的密码API序列;
[0036] 103)、对密码API序列进行污点分析,生成着色Petri网描述数据;
[0037] 104)、结合漏洞检测规则及着色Petri网描述数据,进行密码误用漏洞检测。
[0038] 在分析密码API函数调用方法的基础上,通过对API相关函数及其参数的运行时信息进行自动跟踪、监控与记录,识别不同密码函数之间的参数关联关系,摆脱传统方法对于人工经验的依赖,大大提高检测效率,能够有效防御网络攻击或应用程序潜在安全漏洞。
[0039] 优选的,在检测规则模型和检测规则库建立过程中,通过Cdata数据、数值匹配、污点匹配、漏洞检测规则、漏洞触发条件和参数关联关系,构建密钥密码误用漏洞检测模型和检测规则库。
[0040] 进一步地,Cdata数据表示为四元组,该四元组中的变量包含数据内容、数据长度属性、数据随机性属性和数据来源属性;数值匹配表示两个Cdata数据的数据内容存在k字节以上的相同部分,污点匹配表示两个Cdata数据的污点关联数据存在数值匹配;漏洞检测规则分为原子规则和复合规则,原子规则表示为三元组,该三元组变量包含函数名称、漏洞触发条件和参数关联关系,复合规则由若干原子规则通过参数关联关系连接而成;漏洞触发条件为由密码误用漏洞触发条件和函数所要检查的函数参数组成的集合数据;参数关联关系表示为又一三元组,该三元组变量包含源关联对象、目标函数名称和目标函数关联对象。
[0041] Cdata数据四元组Cdata=<block,lenth,rand,link>,其中,block是数据本身的内容;lenth标识数据长度。rand={none,limit,full}标识数据的随机性,分别代表(1)Cdata在程序多次调用中保持不变;(2)Cdata在程序多次调用中发生变化,但本身不符合随机序列的条件;(3)Cdata在程序多次调用中发生变化,且本身复合随机序列的条件。link={net,file,dialog,inter}标识数据的来源或去向,包括来自/用于网络数据流,本地文件,对话框以及算法内部四种情况。对于一个数据,当其各个变量取定具体数值时,称为一个“数据实例”。
[0042] 在不同Cdata数据之间,可以定义两种等价关系,即数值匹配和污点匹配,其中:
[0043] Cdata1,Cdata2称为“数值匹配”时,当且仅当data1.block与data2.block之间,存在k字节以上的相同数据,记为
[0044] Cdata1,Cdata2称为“污点匹配”时,当且仅当Cdata1的污点关联数据与Cdata2的污点关联数据中存在数值匹配的情况。
[0045] 漏洞检测规则R分为原子规则和复合规则,原子规则定义为二元组{Trigger,Relevance},其中,Trigger表示漏洞触发条件,Relevance表示参数关联关系。复合规则定义为原子规则的组合,由若干原子规则通过参数关联关系Relevance彼此连接而成。漏洞触发条件Trigger定义为,其中,API表示函数名称,Pi表示该函数中所要检测的参数,Ci表示触发漏洞的参数属性条件。
[0046] 以“密钥长度未达到安全需求”的漏洞类型为例,其中一条原子检测规则定义为:
[0047] R1={<CryptGenKey,(dwFlags,Ckey-length)>,NULL}
[0048] 该规则表示当调用API函数CryptGenKey时,如果其参数dwFlags的长度不符合最低下限的长度属性,则判断此处存在漏洞。
[0049] 参数关联关系Relevance用于描述函数调用的关联性特征。由于很多密码误用漏洞需要多个彼此关联的原子规则共同作用才会触发,因此对于此类密码误用漏洞的检测需要对不同函数调用间的关联性进行分析。关联性特征具体分为两类:一是密码函数调用的关联性特征,即为实现一个复杂的密码学功能,多个彼此关联的密码函数通过特定的数据对象传递信息,协同工作。二是密码算法参数相等特征,即不同密码函数的参数取值间存在相等关系。将存在关联关系的两个参数称为一对“关联对象”,并根据规则的判别顺序分别称为源关联对象和目标关联对象。参数关联关系Relevance定义为三元组[SFactor,DApi,DFactor],其中,SFactor表示源关联对象,DApi表示与之相关联规则的目标密码函数名称,DFactor表示目标密码函数的目标关联对象。
[0050] 同样以密钥的参数未达到安全需求的漏洞类型为例,其对应的一条复合规则为:
[0051]
[0052] 通过参数关联关系,刻画出几条原子规则间的关联关系,只有当几条规则同时满足时,才将其识别为漏洞。
[0053] 进一步地,利用动态二进制插桩技术提取加密应用程序中的API信息,在提取加密应用程序中的API运行信息前,首先对加密应用程序中涉及到的函数名称及函数参数,分别记录为密码函数知识库和函数参数知识库,用于动态二进制插桩。然后,利用动态二进制平台,根据实现定义好的密码函数知识库和函数参数知识库,通过插桩的结合,监控应用程序调用API函数过程中的指令、内存和寄存器等信息,提取API名称、返回值和输入输出参数等信息。最后,借助污点分析工具,将密码API参数标记为污点,进行前后两个方向的污点分析,当不同密码函数的参数间存在污点关系,则标记为污点匹配;当参数间存在数据相等关系,则标记为数值匹配。
[0054] 根据提取到的密码API信息以及污点分析得到的参数匹配关系,生成Petri网描述如下:
[0055] 1、对于每一个密码API函数,设置一个库所(place);
[0056] 2、API的输入和输出参数分别对应不同的迁移,以及库所和迁移之间的弧(arc),输入参数对应出弧,输出参数对应入弧;
[0057] 3、当输入输出参数间出现匹配关系时,将其对应的迁移进行合并;
[0058] 4、将数据表示为token,并根据数据属性定义token的颜色。
[0059] 将定义好的检测规则集合映射到xml规则描述文件中,得到检测规则库;分析程序参照规则库对加解密过程中提取到的CryptoAPI调用模式进行检测。针对规则R的误用漏洞检测算法如下:
[0060]
[0061]
[0062] 借助动态插桩技术和污点分析技术,极大地提高看识别和发现漏洞的效率;本方案中漏洞检测规则具有良好的通用性和扩展性,不局限于当前已知密码漏洞的识别,还可通过添加规则库适用于未来新挖掘漏洞的识别;本方案中检测规则与算法的设计建立在对密钥相关漏洞特点的深入分析基础上,针对性强,识别率高。
[0063] 基于上述方法的实施例,本发明还提供一种基于Petri网的密码误用漏洞检测系统,参见图2所示,包含如下内容:检测规则建立模块201、API信息提取模块202和漏洞检测模块203,其中,
[0064] 检测规则建立模块201,用于生成面向漏洞的检测规则集合,检测规则结合中的每个漏洞检测规则依照密钥密码误用漏洞检测模型进行描述;
[0065] API信息提取模块202,用于借助动态二进制插桩和污点分析技术提取密码API运行时的函数名称、函数参数及不同API之间的参数关联关系,并生成Petri网描述数据文件;
[0066] 漏洞检测模块203,用于根据API信息提取模块中生成的Petri网描述数据文件,调用着色Petri网分析工具对数据流进行分析,并与检测规则建立模块中的漏洞检测规则进行匹配,完成对密码误用漏洞的识别和定位。
[0067] 参见图3和4所示,本发明实施例中的检测系统包括规则库建立单元、密码API信息提取单元和漏洞检测单元。规则库建立单元用于生成面向不同类别漏洞的检测规则集合,检测规则依照统一的描述模型进行描述;密码API信息提取单元借助动态二进制插桩和污点分析技术,提取密码API运行时的函数名及参数信息,以及不同密码API之间的参数关联关系,生成Petri网描述数据;漏洞检测单元根据Petri网描述数据,调用着色Petri网分析工具对数据流进行分析,并与漏洞检测规则进行匹配,实现对漏洞的识别与定位。
[0068] 本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
[0069] 本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其它可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0070] 这些计算机程序指令也可存储在能引导计算机或其它可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0071] 这些计算机程序指令也可装载到计算机或其它可编程数据处理设备上,使得在计算机或其它可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其它可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0072] 对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。