用于应用程序的漏洞驱动混合测试系统技术方案

技术编号:26762154 阅读:30 留言:0更新日期:2020-12-18 23:07
用于应用程序的漏洞驱动混合测试系统。根据一个实施例,系统接收由编译器基于源代码生成的中间结果,其中中间结果包括指示源代码的一行或多行潜在地易受攻击的一个或多个漏洞指示。系统对从中间结果生成的第一可执行代码记性灰盒模糊以生成第一组种子输入。系统基于可达到的但尚未被灰盒模糊探索的源代码的行的漏洞指示计算用于第一组的种子输入的每一个的漏洞分数。系统选择第一组中的种子输入中具有最高漏洞分数的一个。系统使用选择的种子输入作为优先级进行concolic执行,concolic执行是对从中间结果生成的第二可执行代码进行的。

【技术实现步骤摘要】
用于应用程序的漏洞驱动混合测试系统
本专利技术的实施例一般涉及安全多方计算。更具体地,本专利技术的实施例涉及一种用于应用程序的漏洞驱动测试系统。
技术介绍
混合模糊测试利用模糊测试(或模糊)和concolic执行两者以改进单独方法中的任一个的代码覆盖,然而,以代码覆盖为中心的设计在漏洞检测方面是低效的,因为它可能盲目地探索可以不包括任何漏洞的代码空间。此外,以覆盖为中心的混合测试在达到代码段之后快速继续前进,而不是检查代码段中的隐藏缺陷。尽管以覆盖为中心的混合模糊测试已经探索了漏洞周围的代码路径,但它可能错过可利用的漏洞。当前以覆盖为中心的混合测试方法包括Driller(一种模糊测试工具:通过选择性的符号执行增强模糊),QSYM(为混合模糊定做的实际concolic执行引擎),以及用于混合模糊的概率路径优先化。这些以覆盖为中心的混合模糊方法都遭受上述问题。
技术实现思路
在第一方面中,本公开实施例提供一种用于评估程序代码的漏洞的计算机实现的方法,所述方法包括:接收由编译器基于源代码生成的中间结果,其中所述中间结果包括指示所述源代码的一行或多行潜在地易受攻击的一个或多个漏洞指示;对从所述中间结果生成的第一可执行代码进行灰盒模糊处理,以生成第一组种子输入;基于可达到的但尚未被所述灰盒模糊处理探索的所述源代码的所述行的漏洞指示,计算所述第一组的所述种子输入的每一个的漏洞分数;选择所述第一组中的所述种子输入中的具有最高漏洞分数的一个;以及使用所选择的种子输入作为优先级进行concolic执行,所述concolic执行是对从所述中间结果生成的第二可执行代码进行的。在第二方面中,本公开实施例提供一种非暂时性机器可读介质,其中存储有指令,当由处理器执行时,所述指令使得所述处理器执行如第一方面所述的方法的操作。在第三方面中,本公开实施例提供一种数据处理系统,包括:处理器;以及存储器,耦合到所述处理器以存储指令,当由所述处理器执行时,所述指令使得处理器执行如第一方面所述的方法的操作。根据本公开实施例提供的方法和系统,可以更高效地进行漏洞检测。附图说明本专利技术的实施例通过示例的方式示出并且不限于附图中的图,在附图中相同的附图标记表示相似的元件。图1是示出根据一个实施例的主机系统的框图。图2是示出根据一个实施例的漏洞驱动混合模糊测试方法的流程图的示例的框图。图3是示出根据一个实施例的用于潜在漏洞的编译器注入的代码的框图。图4是根据一个实施例的用于应用程序的控制流图和对应的映射元组的示例。图5是根据一个实施例的具有可达到的漏洞的基本块映射的示例。图6是根据一个实施例的用于场景的漏洞分数计算的示例。图7是示出根据一个实施例的方法的流程图。图8是示出根据一个实施例的数据处理系统的框图。具体实施方式将参考以下讨论的细节描述本公开的各个实施例和方面,并且附图将示出各个实施例。以下描述和附图是本公开的说明并且不应被解释为限制本公开。描述了许多具体细节以提供对本公开的各种实施例的全面理解。然而,在某些情况下,为了提供对本公开的实施例的简要讨论,没有描述公知或常规的细节。说明书中对“一个实施例”或“实施例”的引用意味着结合该实施例描述的特定特征、结构或特性可包括在本公开的至少一个实施例中。在说明书中的各个地方出现的短语“在一个实施例中”不一定都指同一实施例。本公开的实施例公开了评估程序代码的漏洞的方法和系统。根据一个实施例,系统接收由编译器基于源代码生成的中间结果,其中中间结果包括指示源代码的一行或多行是潜在地易受攻击的一个或多个漏洞指示。系统对从中间结果生成的第一可执行代码进行灰盒模糊处理以生成第一组种子输入。系统基于可达到但尚未被灰盒模糊处理探索的源代码区域的漏洞指示的数量计算用于第一组的种子输入的每一个的漏洞分数。系统选择第一组中的种子输入中的具有最高漏洞分数的一个。系统使用选择的种子输入作为优先级进行concolic执行,其中concolic执行是对从中间结果生成的第二可执行代码进行的。图1是示出根据一个实施例的数据处理系统的框图。参考图1,数据处理系统(例如,主机)100可以是任何类型的计算系统,包括服务器或服务器集群,诸如Web或云服务器、应用服务器、后端服务器或其组合。在另一实施例中,系统100可以是任何类型的设备,诸如个人电脑(例如,台式机、膝上型电脑和平板电脑)、“薄”客户端、个人数字助理(PDA)、具有Web功能的设备、智能手表或移动电话(例如,智能电话)等。系统100可以包括允许客户端访问由系统100提供的资源或服务的接口。服务的示例可包括用于软件程序应用源代码的缺陷/漏洞分析、模糊测试、concolic执行、以及优先化的混合模糊测试服务。可以使用漏洞驱动优先化模块110进行这些服务。系统100可以被配置为云上的软件即服务(SaaS)或平台即服务(PaaS)系统的一部分,所述云可以是私有云、公共云或混合云。接口可以包括Web接口、应用编程接口(API)和/或命令行接口(CLI)。漏洞驱动优先化模块110可包括漏洞/净化器(谷歌发起的一种开源工具集)模块101、基本块(BB)映射模块105、控制流图模块103、协调器模块107、模糊模块109和concolic执行模块111。漏洞/净化器模块101可以是识别软件程序的源代码内的潜在漏洞的工具。这些漏洞可包括存储器损坏、数据失配、线程有关的缺陷/漏洞等。在一个实施例中,模块101通过编译器的前端或后端,诸如用于编译器Clang的未定义行为净化器(UBSan),进行漏洞标记。在另一实施例中,模块101是独立分析器,它可分析包括潜在漏洞的代码区域并识别漏洞标签的数量。在另一实施例中,源代码可被变换为中间表示(IR)作为用于代码分析的中间结果。控制流图(CFG)模块103可以识别并映射软件程序的从一个基本块(BB)到另一个基本块的不同路径或控制流的图。此处,基本块或BB指的是包括软件程序内的一行或多行代码或代码块的代码单元。图映射可以是树图,被存储为描述将BB连接在一起的一个或多个分支的一个或多个元组。对于给定的软件应用程序,模块103为软件程序内的函数/过程中的每一个构建一个或多个过程内CFG,然后模块103通过调用者-被调用者关系将过程内(或函数级)CFG桥接到函数,以便为软件程序构建过程间CFG。为了解析对函数的间接调用(例如通过指针),模块103可以对应用程序内的指针进行Andersen的指向-分析,并且如果指针指向函数调用,则扩展任何调用的函数。Andersen的指向分析是静态代码分析,其分析哪些指针或堆引用指向哪些变量。指针分析可以包括对四种指令类型的分析,例如,变量的寻址、指针的解除引用、将指针从一个变量复制到另一个变量、以及通过指针进行分配。在另一实施例中,模块103还可以将Andersen的指向分析应用于具有动态存储器分配的代码,例如与malloc或new存储器操作相关本文档来自技高网...

【技术保护点】
1.一种用于评估程序代码的漏洞的计算机实现的方法,所述方法包括:/n接收由编译器基于源代码生成的中间结果,其中所述中间结果包括指示所述源代码的一行或多行潜在地易受攻击的一个或多个漏洞指示;/n对从所述中间结果生成的第一可执行代码进行灰盒模糊处理,以生成第一组种子输入;/n基于可达到的但尚未被所述灰盒模糊处理探索的所述源代码的所述行的漏洞指示,计算所述第一组的所述种子输入的每一个的漏洞分数;/n选择所述第一组中的所述种子输入中的具有最高漏洞分数的一个;以及/n使用所选择的种子输入作为优先级进行concolic执行,所述concolic执行是对从所述中间结果生成的第二可执行代码进行的。/n

【技术特征摘要】
20190617 US 16/443,6191.一种用于评估程序代码的漏洞的计算机实现的方法,所述方法包括:
接收由编译器基于源代码生成的中间结果,其中所述中间结果包括指示所述源代码的一行或多行潜在地易受攻击的一个或多个漏洞指示;
对从所述中间结果生成的第一可执行代码进行灰盒模糊处理,以生成第一组种子输入;
基于可达到的但尚未被所述灰盒模糊处理探索的所述源代码的所述行的漏洞指示,计算所述第一组的所述种子输入的每一个的漏洞分数;
选择所述第一组中的所述种子输入中的具有最高漏洞分数的一个;以及
使用所选择的种子输入作为优先级进行concolic执行,所述concolic执行是对从所述中间结果生成的第二可执行代码进行的。


2.如权利要求1所述的方法,其中所述concolic执行生成第二组种子输入,所述第二组种子输入导致所述concolic执行的程序流控制探索所述灰盒模糊处理未探索的所述源代码的一个或多个分支。


3.如权利要求2所述的方法,还包括将所述第二组种子输入添加到所述第一组种子输入,使得所述第二组的一个或多个种子输入在下一迭代期间被所述灰盒模糊处理利用。


4.如权利要求1所述的方法,其中为所述第一组的所述种子输入的每一个计算漏洞分数包括:
识别与所述种子输入对应的已由所述灰盒模糊处理探索的程序控制流;以及
基于程序控制流可达到的但灰盒模糊处理尚未探索的漏洞指示的数量,计算用于所述种子输入的所述漏洞分数。


5.如权利要求1所述的方法,其中选择所述第...

【专利技术属性】
技术研发人员:李鹏张煜龙韦韬
申请(专利权)人:百度美国有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1