安全漏洞检测方法及装置的制造方法_5

文档序号:9375454阅读:来源:国知局
个新的执行逻辑(如约束表达式)之后,均将其保 存入预设约束数据集合中。具体地,每得到一个约束表达式,检测预设约束数据集合中是否 存在该约束表达式,在预设约束数据集合中存在该约束表达式的情况下,确认已经完全找 到待测试程序的执行逻辑,测试用例完全覆盖待测试程序的程序逻辑,已经跑完所有生成 的测试用例,极大的提升自动化挖掘漏洞时测试用例的覆盖程度,大大的提升发现漏洞的 数量。
[0160] 在一个实施例,测试信息还可以包括:待测试程序在执行第一测试用例的过程中 调用的应用程序编程接口 API的信息,安全漏洞检测装置还包括:匹配模块60,用于将待测 试程序在执行第一测试用例的过程中调用的API与预设的危险API进行匹配处理,其中,预 设的危险API为预先获取的用于触发安全漏洞的API ;确定模块70,用于在待测试程序调用 的API中存在与预设的危险API相匹配的第一 API的情况下,确认待测试程序中存在安全 漏洞;报告生成模块80,用于获取待测试程序调用第一 API的调用信息,生成漏洞报告。
[0161] 其中,该实施例中进行匹配处理时,可以通过待测试程序调用的API的名称与预 设的危险API的名称进行匹配处理,如果调用的API中有名称与预设的危险API的名称 一致的API,则确定匹配到待测试程序调用的API中存在与预设的危险API相匹配的第一 API。
[0162] 具体地,上述实施例中,调用预设的危险API即可触发安全漏洞。
[0163] 在待测试程序调用的API中存在与预设的危险API相匹配的第一 API的情况下, 确认待测试程序中存在安全漏洞;在待测试程序调用的API中不存在与预设的危险API相 匹配的第一 API的情况下,确认待测试程序中不存在安全漏洞。
[0164] 需要说明的是,本发明上述实施例中确定待测试程序中是否存在安全漏洞的过程 与依据执行逻辑生成第二测试用例的过程可以是并行处理的。
[0165] 通过上述实施例,在这个循环不停走下去的过程中,测试用例能够覆盖待测试程 序中趋近于100 %的代码逻辑,并能够挖掘待测试程序中的所有漏洞。
[0166] 本实施例中所提供的各个模块的实现方法与上述的方法实施例所提供的使用方 法相同、应用场景也可以相同。当然,需要注意的是,上述模块涉及的方案可以不限于上述 实施例中的内容和场景,且上述模块可以运行在计算机终端或移动终端,可以通过软件或 硬件实现。
[0167] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0168] 在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有 详述的部分,可以参见其他实施例的相关描述。
[0169] 在本申请所提供的几个实施例中,应该理解到,所揭露的客户端,可通过其它的方 式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一 种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者 可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之 间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连 接,可以是电性或其它的形式。
[0170] 所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显 示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个 网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目 的。
[0171] 另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以 是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单 元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0172] 所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用 时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上 或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式 体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机 设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部 或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM, Read-Only Memory)、随机存 取存储器(RAM, Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代 码的介质。
[0173] 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人 员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应 视为本发明的保护范围。
【主权项】
1. 一种安全漏洞检测方法,其特征在于,包括: 记录在待测试程序执行第一测试用例的过程中产生的测试信息,其中,所述测试信息 包括测试指令; 从所述测试指令中获取所述待测试程序执行所述第一测试用例时的执行逻辑; 基于所述执行逻辑生成第二测试用例; 在所述待测试程序中执行所述第二测试用例。2. 根据权利要求1所述的安全漏洞检测方法,其特征在于, 从所述测试指令中获取所述待测试程序执行所述第一测试用例时的执行逻辑包括:从 所述测试指令中提取所述待测试程序的一个或多个约束表达式,其中,所述约束表达式用 于表示所述待测试程序中的逻辑运算关系; 基于所述执行逻辑生成第二测试用例包括:生成满足所述一个或多个约束表达式的所 述第二测试用例。3. 根据权利要求2所述的安全漏洞检测方法,其特征在于,所述生成满足所述一个或 多个约束表达式的所述第二测试用例包括: 生成取值满足所述逻辑运算关系的所述第二测试用例。4. 根据权利要求2所述的安全漏洞检测方法,其特征在于,生成满足所述一个或多个 约束表达式的所述第二测试用例包括: 检测预设约束数据集合中是否存在所述一个或多个约束表达式,其中,预设约束数据 集合中包括一个或多个预设的约束表达式; 在所述预设约束数据集合中不存在所述一个或多个约束表达式中任意一个所述约束 表达式的情况下,生成满足不存在于所述预设约束数据集合中的所述约束表达式的所述第 二测试用例,并将所述约束表达式保存入所述预设约束数据集合; 在所述预设约束数据集合中存在所有所述约束表达式的情况下,结束安全漏洞检测流 程。5. 根据权利要求1至4中任意一项所述的安全漏洞检测方法,其特征在于,所述测试 信息还包括:所述待测试程序在执行所述第一测试用例的过程中调用的应用程序编程接口 API的信息,在记录在待测试程序执行第一测试用例的过程中产生的测试信息之后,所述安 全漏洞检测方法还包括: 将所述待测试程序在执行所述第一测试用例的过程中调用的所述API与预设的危险 API进行匹配处理,其中,所述预设的危险API为预先获取的用于触发安全漏洞的API ; 在所述待测试程序调用的API中存在与所述预设的危险API相匹配的第一 API的情况 下,确认所述待测试程序中存在所述安全漏洞; 获取所述待测试程序调用所述第一 API的调用信息,生成漏洞报告。6. -种安全漏洞检测装置,其特征在于,包括: 记录模块,用于记录在待测试程序执行第一测试用例的过程中产生的测试信息,其中, 所述测试信息包括测试指令; 第一获取模块,用于从所述测试指令中获取所述待测试程序执行所述第一测试用例时 的执行逻辑; 测试用例生成模块,用于基于所述执行逻辑生成第二测试用例; 执行模块,用于在所述待测试程序中执行所述第二测试用例。7. 根据权利要求6所述的安全漏洞检测装置,其特征在于, 所述第一获取模块包括:提取模块,用于从所述测试指令中提取所述待测试程序的 一个或多个约束表达式,其中,所述约束表达式用于表示所述待测试程序中的逻辑运算关 系; 所述测试用例生成模块包括:第一生成模块,用于生成满足所述一个或多个约束表达 式的所述第二测试用例。8. 根据权利要求7所述的安全漏洞检测装置,其特征在于,所述第一生成模块包括: 第一生成子模块,用于生成取值满足所述逻辑运算关系的所述第二测试用例。9. 根据权利要求7所述的安全漏洞检测装置,其特征在于,所述第一生成模块包括: 检测模块,用于检测预设约束数据集合中是否存在所述一个或多个约束表达式,其中, 预设约束数据集合中包括一个或多个预设的约束表达式; 第二生成子模块,用于在所述预设约束数据集合中不存在所述一个或多个约束表达式 中任意一个所述约束表达式的情况下,生成满足不存在于所述预设约束数据集合中的所述 约束表达式的所述第二测试用例; 保存模块,用于将所述约束表达式保存入所述预设约束数据集合; 结束模块,用于在所述预设约束数据集合中存在所有所述约束表达式的情况下,结束 安全漏洞检测流程。10. 根据权利要求6至9中任意一项所述的安全漏洞检测装置,其特征在于,所述测试 信息还包括:所述待测试程序在执行所述第一测试用例的过程中调用的应用程序编程接口 API的信息,所述安全漏洞检测装置还包括: 匹配模块,用于将所述待测试程序在执行所述第一测试用例的过程中调用的所述API 与预设的危险API进行匹配处理,其中,所述预设的危险API为预先获取的用于触发安全漏 洞的API ; 确定模块,用于在所述待测试程序调用的API中存在与所述预设的危险API相匹配的 第一 API的情况下,确认所述待测试程序中存在所述安全漏洞; 报告生成模块,用于获取所述待测试程序调用所述第一 API的调用信息,生成漏洞报 生1=1 O
【专利摘要】本发明公开了一种安全漏洞检测方法及装置。其中,该方法包括:记录在待测试程序执行第一测试用例的过程中产生的测试信息,其中,测试信息包括测试指令;从测试指令中获取待测试程序执行第一测试用例时的执行逻辑;基于执行逻辑生成第二测试用例;在待测试程序中执行第二测试用例。采用本发明,解决了现有技术中黑盒挖掘安全漏洞中使用的测试用例无法有效覆盖待测试程序的代码路径,漏掉很多漏洞,漏检率高的问题,实现了有效覆盖更多的待测试程序中的代码路径,减少安全漏洞的漏检率的效果。
【IPC分类】G06F11/36
【公开号】CN105095066
【申请号】CN201410216397
【发明人】郭冕
【申请人】腾讯科技(深圳)有限公司
【公开日】2015年11月25日
【申请日】2014年5月21日
当前第5页1 2 3 4 5 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1