用于检测漏洞的方法和装置制造方法及图纸

技术编号:21343959 阅读:21 留言:0更新日期:2019-06-13 22:38
本公开的实施例公开了用于检测漏洞的方法和装置。该方法的一具体实现方式包括:从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;确定待处理函数的输入变量的类型;根据所确定的类型,确定待处理函数是否存在漏洞。该实施方式提高了检测代码中的漏洞的灵活性。

Methods and devices for detecting vulnerabilities

Embodiments of the present disclosure disclose methods and devices for detecting vulnerabilities. One specific implementation of this method includes: identifying the function matching the dangerous function in the set of pre-stored dangerous functions from the target code as the function to be processed; determining the type of input variables of the function to be processed; and determining whether there are loopholes in the function to be processed according to the type determined. The implementation improves the flexibility of detecting vulnerabilities in code.

【技术实现步骤摘要】
用于检测漏洞的方法和装置
本公开的实施例涉及计算机
,具体涉及用于检测漏洞的方法和装置。
技术介绍
信息社会对软件的依赖不断增加,随着软件数量快速增长,软件存在的信息安全问题日益彰显,成为信息安全和用户隐私方面的重要隐患。目前,不论在商业软件还是开源软件中,软件的漏洞随处可见。随着软件数量以及软件漏洞的增加,采用人工方式检查软件中的代码是否存在漏洞已经不再现实。因此,相关技术中,存在自动对软件中的代码进行漏洞检测的需求。
技术实现思路
本公开的实施例提出了用于检测漏洞的方法和装置。第一方面,本公开的实施例提供了一种用于检测漏洞的方法,该方法包括:包括:从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;确定待处理函数的输入变量的类型;根据所确定的类型,确定待处理函数是否存在漏洞。在一些实施例中,从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数,包括:对目标代码进行语法解析,得到目标代码的语法树(syntaxtree),其中,语法树包括至少一个子树,子树用于描述目标代码中的表达式;对于至少一个子树中的子树,响应于确定该子树所描述的表达式中包括函数,确定所包括的函数是否属于危险函数集合,响应于确定属于,将所包括的函数作为待处理函数。在一些实施例中,确定待处理函数的输入变量的类型,包括:确定预先确定的不可控变量集合中是否存在与输入变量相匹配的不可控变量;响应于确定不存在,确定输入变量的类型为第二类型,其中,第二类型用于表征变量可控。在一些实施例中,预先确定的不可控变量集合通过如下步骤确定:从根节点至子节点方向遍历语法树,得到至少一个子树所描述的至少一个表达式中的变量集合;确定变量集合中的变量的类型,将类型为第一类型的变量确定为不可控变量,存入不可控变量集合,其中,第一类型用于表征变量不可控。在一些实施例中,根据所确定的类型,确定待处理函数是否存在漏洞,包括:响应于确定输入变量的类型为第二类型,确定待处理函数存在漏洞。在一些实施例中,方法还包括:响应于确定待处理函数存在漏洞,发出预先设定的、对应于待处理函数的报警信息。第二方面,本公开的实施例提供了一种用于检测漏洞的装置,该装置包括:函数确定单元,被配置成从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;类型确定单元,被配置成确定待处理函数的输入变量的类型;漏洞确定单元,被配置成根据所确定的类型,确定待处理函数是否存在漏洞。在一些实施例中,函数确定单元,被进一步配置成:对目标代码进行语法解析,得到目标代码的语法树,其中,语法树包括至少一个子树,子树用于描述目标代码中的表达式;对于至少一个子树中的子树,响应于确定该子树所描述的表达式中包括函数,确定所包括的函数是否属于危险函数集合,响应于确定属于,将所包括的函数作为待处理函数。在一些实施例中,类型确定单元,被进一步配置成:确定预先确定的不可控变量集合中是否存在与输入变量相匹配的不可控变量;响应于确定不存在,确定输入变量的类型为第二类型,其中,第二类型用于表征变量可控。在一些实施例中,预先确定的不可控变量集合通过如下步骤确定:从根节点至子节点方向遍历语法树,得到至少一个子树所描述的至少一个表达式中的变量集合;确定变量集合中的变量的类型,将类型为第一类型的变量确定为不可控变量,存入不可控变量集合,其中,第一类型用于表征变量不可控。在一些实施例中,漏洞确定单元,被进一步配置成:响应于确定输入变量的类型为第二类型,确定待处理函数存在漏洞。在一些实施例中,装置还包括:报警发出单元,被配置成响应于确定待处理函数存在漏洞,发出预先设定的、对应于待处理函数的报警信息。第三方面,本公开的实施例提供了一种电子设备,该电子设备包括:一个或多个处理器;存储装置,其上存储有一个或多个程序;当该一个或多个程序被该一个或多个处理器执行,使得该一个或多个处理器实现如第一方面中任一实现方式描述的方法。第四方面,本公开的实施例提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理器执行时实现如第一方面中任一实现方式描述的方法。本公开的实施例提供的用于检测漏洞的方法和装置,可以从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数。然后,确定待处理函数的输入变量的类型。最后,根据所确定的类型,确定待处理函数是否存在漏洞。本实施例的方法和装置,可以依据待处理函数的输入变量的类型,来确定待处理函数是否存在漏洞,丰富了检测代码中的漏洞的方法,提高了检测代码中的漏洞的灵活性。附图说明通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本公开的其它特征、目的和优点将会变得更明显:图1是本公开的一个实施例可以应用于其中的示例性系统架构图;图2是根据本公开的用于检测漏洞的方法的一个实施例的流程图;图3是根据本公开的实施例的用于检测漏洞的方法的一个应用场景的示意图;图4是根据本公开的用于检测漏洞的方法的又一个实施例的流程图;图5是根据本公开的用于检测漏洞的装置的一个实施例的结构示意图;图6是适于用来实现本公开的实施例的电子设备的结构示意图。具体实施方式下面结合附图和实施例对本公开作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关专利技术,而非对该专利技术的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关专利技术相关的部分。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本公开。图1示出了可以应用本公开的实施例的用于检测漏洞的方法或用于检测漏洞的装置的示例性系统架构100。如图1所示,系统架构100可以包括数据库服务器101,网络102和服务器103。网络102用以在数据库服务器101和服务器103之间提供通信链路的介质。网络102可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。数据库服务器101可以通过网络102与服务器103交互,以接收或发送消息等。数据库服务器101可以实现成提供各种数据存储服务的分布式服务器集群,也可以实现成单个服务器。例如,存储有危险函数集合的服务器。数据库服务器101可以将所存储的危险函数集合发送给服务器103。服务器103可以通过网络102与数据库服务器101交互,以接收或发送消息等。服务器103可以是提供各种服务的服务器,例如,基于数据库服务器101中的危险函数集合对目标代码进行漏洞检测的服务器。服务器103可以基于数据库服务器101中的危险函数集合,从目标代码中确定出与危险函数集合中的危险函数相匹配的函数,作为待处理函数。然后,确定待处理函数的输入变量的类型。最后,根据所确定的类型,确定待处理函数是否存在漏洞。需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务),也可以实现成单个软件或软件模块。在此不做具体限定。需要说明的是,本公开的实施例所提供的用于检测漏洞的方法一般由服务器103执行,相应地,用于检测漏洞的装置一般设置于服务器1本文档来自技高网...

【技术保护点】
1.一种用于检测漏洞的方法,包括:从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;确定所述待处理函数的输入变量的类型;根据所确定的类型,确定所述待处理函数是否存在漏洞。

【技术特征摘要】
1.一种用于检测漏洞的方法,包括:从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;确定所述待处理函数的输入变量的类型;根据所确定的类型,确定所述待处理函数是否存在漏洞。2.根据权利要求1所述的方法,其中,所述从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数,包括:对所述目标代码进行语法解析,得到所述目标代码的语法树,其中,所述语法树包括至少一个子树,子树用于描述所述目标代码中的表达式;对于所述至少一个子树中的子树,响应于确定该子树所描述的表达式中包括函数,确定所包括的函数是否属于所述危险函数集合,响应于确定属于,将所包括的函数作为待处理函数。3.根据权利要求2所述的方法,其中,所述确定所述待处理函数的输入变量的类型,包括:确定预先确定的不可控变量集合中是否存在与所述输入变量相匹配的不可控变量;响应于确定不存在,确定所述输入变量的类型为第二类型,其中,所述第二类型用于表征变量可控。4.根据权利要求3所述的方法,其中,所述预先确定的不可控变量集合通过如下步骤确定:从根节点至子节点方向遍历所述语法树,得到所述至少一个子树所描述的至少一个表达式中的变量集合;确定所述变量集合中的变量的类型,将类型为第一类型的变量确定为不可控变量,存入不可控变量集合,其中,所述第一类型用于表征变量不可控。5.根据权利要求3所述的方法,其中,所述根据所确定的类型,确定所述待处理函数是否存在漏洞,包括:响应于确定所述输入变量的类型为第二类型,确定所述待处理函数存在漏洞。6.根据权利要求1-5之一所述的方法,其中,所述方法还包括:响应于确定所述待处理函数存在漏洞,发出预先设定的、对应于所述待处理函数的报警信息。7.一种用于检测漏洞的装置,包括:函数确定单元,被配置成从目标代码中确定出与预先存储的危险函数集合中的危险函数相匹配的函数,作为待处理函数;类型确定单...

【专利技术属性】
技术研发人员:王诗雨刘钟航
申请(专利权)人:北京百度网讯科技有限公司
类型:发明
国别省市:北京,11

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

1