CN108416216A - 漏洞检测方法、装置及计算设备 - Google Patents

漏洞检测方法、装置及计算设备 Download PDF

Info

Publication number
CN108416216A
CN108416216A CN201810167916.4A CN201810167916A CN108416216A CN 108416216 A CN108416216 A CN 108416216A CN 201810167916 A CN201810167916 A CN 201810167916A CN 108416216 A CN108416216 A CN 108416216A
Authority
CN
China
Prior art keywords
code
loophole
function
character string
realization
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201810167916.4A
Other languages
English (en)
Inventor
王加水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Advanced New Technologies Co Ltd
Advantageous New Technologies Co Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201810167916.4A priority Critical patent/CN108416216A/zh
Publication of CN108416216A publication Critical patent/CN108416216A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Machine Translation (AREA)

Abstract

本说明书提供一种漏洞检测方法、装置及计算设备,本说明书实施例方案通过配置两类漏洞规则:字符串规则和语义规则;其中,字符串规则针对代码语句本身,能用于识别出所述实现代码中是否包含有漏洞代码语句;而语义规则从代码语句的上下文逻辑关系出发,通过运行所述实现代码后获取所述实现代码的运行结果,根据运行结果识别出是否存在漏洞风险。本说明实施例通过结合两类漏洞规则对第三方SDK进行漏洞检测,漏洞检测的精确度和覆盖面显著提升,可以在第三方SDK引入应用程序之前,有效地检测第三方SDK是否有漏洞风险,防止对应用程序引入安全隐患。

Description

漏洞检测方法、装置及计算设备
技术领域
本说明书涉及安全检测技术领域,尤其涉及漏洞检测方法、装置及计算设备。
背景技术
第三方SDK(Software Development Kit,软件开发工具包)一般是指为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件时的开发工具的集合。目前大量的移动端应用都有引入第三方SDK的需求,应用开发者通过利用第三方SDK集成的能力可以减少开发资源的投入,以满足自身业务的发展。通常,开发人员根据需要获得这些第三方SDK后,可以将第三方SDK集成于应用内。在应用运行时,由于这些第三方SDK运行于应用进程内,有可能会引入安全隐患。
发明内容
为克服相关技术中存在的问题,本说明书实施例提供了漏洞检测方法、装置及计算设备。
根据本说明书实施例的第一方面,提供一种漏洞检测方法,所述方法包括:
获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
可选的,所述字符串规则包括至少一条漏洞字符串;
所述根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句,包括:
将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
可选的,所述实现代码中的代码语句,通过如下一种或多种方式从所述实现代码中识别出:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为实现代码中的代码语句、或通过预设符号识别出实现代码中的代码语句。
可选的,所述实现代码中包括至少一个函数;所述语义规则包括:函数运行结果中包含设定的漏洞信息;
所述运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险,包括:
获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
可选的,所述触发条件包括:所述函数的输入参数,和/或函数中条件语句的执行条件。
可选的,所述实现代码中包括多个函数;
所述根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞风险,包括:
获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系;
根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
根据本说明书实施例的第二方面,提供一种漏洞检测装置,所述装置包括:
代码获取模块,用于:获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
规则模块,用于:获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
代码语句识别模块,用于:根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
语义识别模块,用于:运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
漏洞风险确定模块,用于:结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
可选的,所述字符串规则包括至少一条漏洞字符串;
所述代码语句识别模块,具体用于:
将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
可选的,所述代码语句识别模块,还具体用于:
通过如下一种或多种方式识别出实现代码中的代码语句:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为实现代码中的代码语句、或通过预设符号识别出实现代码中的代码语句。
可选的,所述实现代码中包括至少一个函数;所述语义规则包括:函数运行结果中包含设定的漏洞信息;
所述语义识别模块,具体用于:
获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
可选的,所述触发条件包括:所述函数的输入参数,和/或函数中条件语句的执行条件。
可选的,所述实现代码中包括多个函数;
所述语义识别模块,具体用于:
获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系;
根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
根据本说明书实施例的第三方面,提供一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例中,通过配置两类漏洞规则:字符串规则和语义规则;其中,字符串规则针对代码语句本身,能用于识别出所述实现代码中是否包含有漏洞代码语句;而语义规则从代码语句的上下文逻辑关系出发,通过运行所述实现代码后获取所述实现代码的运行结果,根据运行结果识别出是否存在漏洞风险。本说明实施例通过结合两类漏洞规则对第三方SDK进行漏洞检测,漏洞检测的精确度和覆盖面显著提升,可以在第三方SDK引入应用程序之前,有效地检测第三方SDK是否有漏洞风险,防止对应用程序引入安全隐患。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本说明书的实施例,并与说明书一起用于解释本说明书的原理。
图1是本说明书根据一示例性实施例示出的一种漏洞检测方法的流程图。
图2是本说明书根据一示例性实施例示出的一种漏洞检测方法的应用场景图。
图3是本说明书漏洞检测装置所在计算设备的一种硬件结构图。
图4是本说明书根据一示例性实施例示出的一种漏洞检测装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
目前,广告、支付、统计、社交、推送或地图等第三方服务商都提供有第三方SDK,这些第三方SDK可以引入至应用程序中,用户在使用应用程序的过程中,通过该第三方SDK可以获得第三方服务商提供的服务。本说明书实施例的第三方,是指除了提供应用程序的服务方、以及用户之外的第三方。这些第三方SDK通常封装有一些复杂的函数,以及提供有给应用程序开发者调用函数的、可用于请求、响应或解析等等用途的API(ApplicationProgramming Interface,应用程序编程接口)。
对于提供应用程序的服务方来说,第三方SDK是由第三方的开发人员所开发的,因此可能因为各第三方的开发人员的开发安全意识和技术有限而导致SDK存在漏洞。由于第三方SDK被引入至很多应用程序中,其使用非常广泛,若SDK中的这些漏洞被利用,其危害之大不言而喻。
基于此,本说明书实施例提供一种漏洞检测方案,该方案可以在第三方SDK引入至应用程序之前,检测第三方SDK是否有漏洞,以提前发现第三方SDK可能存在的漏洞风险。接下来对本说明书实施例进行详细说明。
如图1所示,图1是本说明书根据一示例性实施例示出的一种漏洞检测方法的流程图,包括以下步骤:
在步骤102中,获取待检测的第三方SDK后,获取所述第三方SDK的实现代码。
在步骤104中,获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则。
在步骤106中,根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句。
在步骤108中,运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险。
在步骤110中,结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
本说明书实施例中的漏洞,可以包括多种情况,例如第三方SDK可能存在有弱点或缺陷,这些弱点或缺陷可能来自第三方SDK的实现代码产生的错误,也有可能来自第三方SDK中某些逻辑缺陷或流程设计上的不合理之处,因此这些弱点或缺陷有可能存在被攻击或产生危险事件的可能性。
本说明书实施例方案,考虑到第三方服务商提供的第三方SDK通常为压缩包,该压缩包是在源代码编写完成后所生成的,因此可以利用第三方SDK的实现代码对第三方SDK是否有漏洞风险进行检测。具体的,可以根据该SDK所采用的编程语言,利用该编程语言对应的开发平台对该压缩包进行解压处理,对解压处理后的文件,可以从中提取出第三方SDK的实现代码。
对于该实现代码,其由一条条的代码语句构成,这些代码可以运行,运行过程可能涉及数据获取、数据读写、计算或数据输出等。基于此,本说明书实施例方案预先设定的漏洞规则,可以包括两种,一种是字符串规则,该字符串规则用于对所述实现代码的代码语句进行漏洞风险的检测;另一种语义规则,用于识别代码运行后的运行结果是否存在漏洞风险。
其中,上述漏洞规则的设定过程,可以预先收集已知的SDK漏洞,根据这些已知漏洞设定对应的漏洞规则,还可以针对电子设备、操作系统或应用程序中某些敏感位置、某些敏感数据分析可能产生的漏洞,基于这些可能产生的漏洞设定对应的漏洞规则等等。
针对字符串规则,该字符串规则中包括至少一条漏洞字符串,对于实现代码中的代码语句,代码语句可以认为是由字符串构成的,因此,所述根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句,可以包括:将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
其中,对于字符串匹配问题,可以理解为:假设有一个字符串S=“BBCDABCDABABCDABCDABDAB”,其中是否包含另一个字符串T=“ABCDABD”如果有,子串T位于主串S中什么位置。传统的字符串匹配可以采用的算法可以有朴素算法(Naive Algorithm)、Rabin-Karp算法、有限自动机算法(Finite Automation)、Knuth-Morris-Pratt算法(即KMPAlgorithm)等,实际应用中可以灵活选取合适的算法,进而实现代码中的代码语句与漏洞字符串进行字符串匹配。
对于第三方SDK的实现代码,当利用开发工具从压缩包中提取出来后,对设备而言,第三方SDK的实现代码是由一系列字符构成,在进行字符串匹配时,可以利用这一系列字符直接与漏洞代码语句进行匹配,以识别出实现代码中是否包含有漏洞代码语句。可选的,为了进一步提高字符串匹配效果,本实施例可以先从实现代码中识别出代码语句,通过如下的一段朴素算法的代码为例进行说明:
开发人员所编写出的代码通常可以由一个个函数构成,而每个函数的开始,都会有函数声明语句,例如上述例子中的“void”等;在函数内部,各条代码语句可能是隔行排列,也即是,每一行中包含一条或多条代码语句;另外,代码语句可能还采用某些特殊的符号分割开,例如“()”、“;”或“{}”等。基于此,本说明书还提供一个可选的实施例,可以通过如下一种或多种方式从所述实现代码中识别出代码语句:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为实现代码中的代码语句、或通过预设符号识别出实现代码中的代码语句。
通过上述方式,本说明书实施例可以通过函数声明语句识别出函数,并将表达整个函数的代码作为代码语句,因此可以针对函数识别出其中是否包含有漏洞代码语句;在其他例子中,可以是认为每一行的字符串作为代码语句;在另一些例子中,还可以通过“()”、“;”或“{}”等设定符号识别出代码语句等,例如,可以是“(”与“)”之间所包含的字符串作为一条代码语句,将两个“;”之间所包含的字符串作为一条代码语句,或者是将“{”与“}”之间所包含的字符串作为一条代码语句等多种方式。
除了代码语句本身可能存在的漏洞,由前述分析可知,SDK中通常封装了一些函数的实现逻辑,并提供有调用这些函数的接口,本说明实施例的另一方面,还提供有语义规则,从代码的逻辑方面来考虑SDK中是否可能存在逻辑漏洞。具体的,本实施例可以通过运行SDK的实现代码,获取实现代码的运行结果,利用语义规则识别运行结果是否存在漏洞风险。本实施例根据已知或可能存在的漏洞来设计具体的漏洞规则,因此,语义规则可以包括:函数运行结果中包含设定的漏洞信息,这些漏洞信息可以是函数在某些敏感位置写入数据、函数调用了某些敏感位置的数据、函数调用后输出了存在漏洞的数据、函数调用关系错误等等。因此,针对SDK的实现代码中所封装的函数,所述运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞,可以包括:获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
作为示例,以下示出了一条语义规则:
if method'write'then string'/data/data'
该规则的含义是,假设存在具有“write(数据写入)”功能的函数,则检测是否在路径“/data/data”下写入数据。
通常在函数头部,函数具有一定的触发条件,这些触发条件可以是函数头部的输入参数,该输入参数可能需要由用户触发而生成,也有可能是需要调用其他函数等,因此,上述触发条件可以包括所述函数的输入参数,本说明实施例通过配置该输入参数,从而使得函数能够运行。另一方面,在函数内部可能包括多条条件语句,这些条件语句指向不同的处理分支,为了能够获得全面的函数运行结果,触发条件还可以包括函数中条件语句的各个执行条件。
举例来说,假设有如下条件语句:
if(a>b)max=a;
else max=b;
执行该语句的语义是:如a>b为真,则把a赋予max,否则把b赋予max。因此,针对上述条件语句,其具有两种执行条件,分别是a>b和a≤b,因此本说明书实施例可以配置上述两种执行条件,使得函数在不同的触发条件下运行,从而获得全面的运行结果。
在其他的可选方式中,实现代码中可能包括多个函数,多个函数之间可能存在参数传递关系,作为例子,函数2的输入需要依赖函数1的某个输出、以及函数3的某个输出等等。而存在有参数传递关系的函数发生漏洞的可能性也较大,基于此,本说明书实施例还可以获取所述函数的输入参数和输出参数,从而确定所述多个函数之间的参数传递关系,之后,可以根据函数运行后的运行结果与参数传递关系的匹配结果,检查这些具有参数传递关系的函数之间是否可能存在漏洞风险。
通过上述方式,利用字符串规则能识别出所述实现代码中是否包含有漏洞代码语句,利用语义规则能识别出所述运行结果是否存在漏洞风险,因此,可以结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险,具体的,对于字符串规则和语义规则如何结合,实际应用中可以灵活配置,比如只要字符串规则和语义规则中任一发现有漏洞风险,则认为第三方SDK存在漏洞风险,或者是字符串规则和语义规则共发现有设定个数的漏洞风险,则认为第三方SDK存在漏洞风险等等,本说明实施例对此不作限定。
接下来再通过一实施例对本说明书提供的漏洞检测方案进行说明。
如图2所示,是本说明书实施例提供的一种漏洞检测方法的应用场景图,可选的,图2中部署有分布式云平台,该云平台从功能上可划分为解包器和漏洞规则引擎,其中,漏洞规则引擎包括字符串规则引擎和语义规则引擎。
具体的,待检测的第三方SDK可以直接进入解包器,由解包器对SDK进行解包处理,从而获得第三方SDK的实现代码。同时,规则引擎中可以加载漏洞规则,具体的,字符串规则引擎加载字符串规则,语义规则引擎加载语义规则。第三方SDK的实现代码则开始启动漏洞检测过程,可选的,字符串规则引擎和语义规则引擎可以并行启动,字符串规则可以识别出所述实现代码中是否包含有漏洞代码语句,语义规则引擎则运行所述实现代码后获取所述实现代码的运行结果。
可选的,字符串规则引擎可以将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句,字符串规则可以理解为单一漏洞代码语句的比对,而本说明书实施例的语义规则引擎可以分析代码中上下文所包含的逻辑关系,具体的,可以获取所述函数的触发条件,配置所述触发条件后触发函数运行,例如针对包含很多if-else等条件语句进行校验判断,通过触发条件的配置,可以检测出所有的条件分支,使得漏洞检测失误的可能性显著减少;字符串规则引擎还可以进行数据流分析,对具有参数传递关系的多个函数之间,获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系,根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
与前述漏洞检测方法的实施例相对应,本说明书还提供了漏洞检测装置及其所应用的计算设备的实施例。
本说明书漏洞检测装置的实施例可以应用在计算设备上,例如服务器或终端设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在漏洞检测的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本说明书漏洞检测装置所在计算设备的一种硬件结构图,除了图3所示的处理器310、内存330、网络接口320、以及非易失性存储器340之外,实施例中装置331所在的服务器或终端设备,通常根据该计算设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图4所示,图4是本说明书根据一示例性实施例示出的一种漏洞检测装置的框图,所述装置包括:
代码获取模块41,用于:获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
规则模块42,用于:获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
代码语句识别模块43,用于:根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
语义识别模块44,用于:运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
漏洞风险确定模块,用于:结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
可选的所述字符串规则包括至少一条漏洞字符串;
所述代码语句识别模块,具体用于:
将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
可选的,所述代码语句识别模块,还具体用于:
通过如下一种或多种方式识别出实现代码中的代码语句:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为实现代码中的代码语句、或通过预设符号识别出实现代码中的代码语句。
可选的,所述实现代码中包括至少一个函数;所述语义规则包括:函数运行结果中包含设定的漏洞信息;
所述语义识别模块,具体用于:
获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
可选的,所述触发条件包括:所述函数的输入参数,和/或函数中条件语句的执行条件。
可选的,所述实现代码中包括多个函数;
所述语义识别模块,具体用于:
获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系;
根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
相应的,本说明书还提供一种计算设备,所述计算设备包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
上述漏洞检测装置中各个模块的功能和作用的实现过程具体详见上述漏洞检测方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。

Claims (13)

1.一种漏洞检测方法,所述方法包括:
获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
2.根据权利要求1所述的方法,所述字符串规则包括至少一条漏洞字符串;
所述根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句,包括:
将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
3.根据权利要求2所述的方法,所述实现代码中的代码语句,通过如下一种或多种方式从所述实现代码中识别出:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为所述实现代码中的代码语句、或通过预设符号识别出所述实现代码中的代码语句。
4.根据权利要求1所述的方法,所述实现代码中包括至少一个函数;所述语义规则包括:函数运行结果中包含设定的漏洞信息;
所述运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险,包括:
获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
5.根据权利要求4所述的方法,所述触发条件包括:所述函数的输入参数,和/或所述函数中条件语句的执行条件。
6.根据权利要求4所述的方法,所述实现代码中包括多个函数;
所述根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞风险,包括:
获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系;
根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
7.一种漏洞检测装置,所述装置包括:
代码获取模块,用于:获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
规则模块,用于:获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
代码语句识别模块,用于:根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
语义识别模块,用于:运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
漏洞风险确定模块,用于:结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
8.根据权利要求7所述的装置,所述字符串规则包括至少一条漏洞字符串;
所述代码语句识别模块,具体用于:
将所述实现代码中的代码语句与所述漏洞字符串进行字符串匹配,根据匹配结果确定所述实现代码中是否包含有漏洞代码语句。
9.根据权利要求8所述的装置,所述代码语句识别模块,还具体用于:
通过如下一种或多种方式识别出实现代码中的代码语句:
通过函数声明语句将函数相关代码作为所述实现代码中的代码语句、将每行所包含字符串作为实现代码中的代码语句、或通过预设符号识别出实现代码中的代码语句。
10.根据权利要求7所述的装置,所述实现代码中包括至少一个函数;所述语义规则包括:函数运行结果中包含设定的漏洞信息;
所述语义识别模块,具体用于:
获取所述函数的触发条件,配置所述触发条件后触发所述函数运行,根据所述漏洞信息与所述函数的运行结果的匹配结果确定是否存在漏洞。
11.根据权利要求10所述的装置,所述触发条件包括:所述函数的输入参数,和/或函数中条件语句的执行条件。
12.根据权利要求10所述的装置,所述实现代码中包括多个函数;
所述语义识别模块,具体用于:
获取所述函数的输入参数和输出参数,确定所述多个函数之间的参数传递关系;
根据所述函数的运行结果与所述参数传递关系的匹配结果确定是否存在漏洞风险。
13.一种计算设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取待检测的第三方SDK后,获取所述第三方SDK的实现代码;
获取设定的漏洞规则,所述漏洞规则包括:字符串规则和语义规则;
根据所述字符串规则识别出所述实现代码中是否包含有漏洞代码语句;
运行所述实现代码后获取所述实现代码的运行结果,根据所述语义规则识别出所述运行结果是否存在漏洞风险;
结合所述字符串规则和所述语义规则的识别结果,确定所述第三方SDK是否存在漏洞风险。
CN201810167916.4A 2018-02-28 2018-02-28 漏洞检测方法、装置及计算设备 Pending CN108416216A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810167916.4A CN108416216A (zh) 2018-02-28 2018-02-28 漏洞检测方法、装置及计算设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810167916.4A CN108416216A (zh) 2018-02-28 2018-02-28 漏洞检测方法、装置及计算设备

Publications (1)

Publication Number Publication Date
CN108416216A true CN108416216A (zh) 2018-08-17

Family

ID=63129415

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810167916.4A Pending CN108416216A (zh) 2018-02-28 2018-02-28 漏洞检测方法、装置及计算设备

Country Status (1)

Country Link
CN (1) CN108416216A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109710305A (zh) * 2018-11-27 2019-05-03 平安科技(深圳)有限公司 一种开发信息的获取方法、装置、存储介质及终端设备
CN109829298A (zh) * 2018-11-26 2019-05-31 努比亚技术有限公司 内存泄露风险检测方法、终端及计算机可读存储介质
CN110113325A (zh) * 2019-04-25 2019-08-09 成都卫士通信息产业股份有限公司 基于第三方sdk的网络数据监控方法、装置及存储介质
CN110909363A (zh) * 2019-11-25 2020-03-24 中国人寿保险股份有限公司 基于大数据的软件第三方组件漏洞应急响应系统及方法
CN110968874A (zh) * 2019-11-28 2020-04-07 腾讯科技(深圳)有限公司 一种漏洞检测方法、装置、服务器及存储介质
CN110990833A (zh) * 2019-10-31 2020-04-10 重庆小雨点小额贷款有限公司 一种sdk安全检测方法及相关设备
CN111382444A (zh) * 2018-12-27 2020-07-07 台达电子工业股份有限公司 软件安全检测系统及软件安全检测方法
CN111563257A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据检测方法及装置、计算机可读介质及终端设备
CN111654495A (zh) * 2020-06-03 2020-09-11 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质
CN112055009A (zh) * 2020-08-31 2020-12-08 北京天融信网络安全技术有限公司 漏洞数据的比较方法、装置、电子设备以及存储介质
CN114884722A (zh) * 2022-05-05 2022-08-09 五八有限公司 漏洞检测方法、装置、电子设备及可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101847121A (zh) * 2010-05-07 2010-09-29 北京大学 一种软件漏洞挖掘方法
CN106548076A (zh) * 2015-09-23 2017-03-29 百度在线网络技术(北京)有限公司 检测应用漏洞代码的方法和装置
CN107657177A (zh) * 2017-09-30 2018-02-02 北京奇虎科技有限公司 一种漏洞检测方法及装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101847121A (zh) * 2010-05-07 2010-09-29 北京大学 一种软件漏洞挖掘方法
CN106548076A (zh) * 2015-09-23 2017-03-29 百度在线网络技术(北京)有限公司 检测应用漏洞代码的方法和装置
CN107657177A (zh) * 2017-09-30 2018-02-02 北京奇虎科技有限公司 一种漏洞检测方法及装置

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109829298A (zh) * 2018-11-26 2019-05-31 努比亚技术有限公司 内存泄露风险检测方法、终端及计算机可读存储介质
CN109710305A (zh) * 2018-11-27 2019-05-03 平安科技(深圳)有限公司 一种开发信息的获取方法、装置、存储介质及终端设备
CN111382444A (zh) * 2018-12-27 2020-07-07 台达电子工业股份有限公司 软件安全检测系统及软件安全检测方法
CN111382444B (zh) * 2018-12-27 2023-08-29 台达电子工业股份有限公司 软件安全检测系统及软件安全检测方法
CN110113325A (zh) * 2019-04-25 2019-08-09 成都卫士通信息产业股份有限公司 基于第三方sdk的网络数据监控方法、装置及存储介质
CN110990833A (zh) * 2019-10-31 2020-04-10 重庆小雨点小额贷款有限公司 一种sdk安全检测方法及相关设备
CN110909363A (zh) * 2019-11-25 2020-03-24 中国人寿保险股份有限公司 基于大数据的软件第三方组件漏洞应急响应系统及方法
CN110968874A (zh) * 2019-11-28 2020-04-07 腾讯科技(深圳)有限公司 一种漏洞检测方法、装置、服务器及存储介质
CN111563257A (zh) * 2020-04-15 2020-08-21 成都欧珀通信科技有限公司 数据检测方法及装置、计算机可读介质及终端设备
CN111654495A (zh) * 2020-06-03 2020-09-11 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质
CN111654495B (zh) * 2020-06-03 2023-06-27 百度在线网络技术(北京)有限公司 用于确定流量产生来源的方法、装置、设备及存储介质
CN112055009A (zh) * 2020-08-31 2020-12-08 北京天融信网络安全技术有限公司 漏洞数据的比较方法、装置、电子设备以及存储介质
CN114884722A (zh) * 2022-05-05 2022-08-09 五八有限公司 漏洞检测方法、装置、电子设备及可读存储介质

Similar Documents

Publication Publication Date Title
CN108416216A (zh) 漏洞检测方法、装置及计算设备
US8850581B2 (en) Identification of malware detection signature candidate code
Pandita et al. {WHYPER}: Towards automating risk assessment of mobile applications
US7849509B2 (en) Detection of security vulnerabilities in computer programs
US10742666B2 (en) System and method for static detection and categorization of information-flow downgraders
US8635602B2 (en) Verification of information-flow downgraders
CN103257919B (zh) 脚本程序检查方法和装置
US10613844B2 (en) Using comments of a program to provide optimizations
CN108845839A (zh) 应用页面加载方法、装置及计算机可读存储介质
Huang et al. Detecting sensitive data disclosure via bi-directional text correlation analysis
US10970449B2 (en) Learning framework for software-hardware model generation and verification
WO2021223215A1 (en) Automated decision platform
US20230050691A1 (en) System for detecting malicious programmable logic controller code
CN113312618A (zh) 程序漏洞检测方法、装置、电子设备及介质
US10839124B1 (en) Interactive compilation of software to a hardware language to satisfy formal verification constraints
KR102546424B1 (ko) 학습용 데이터 생성 장치, 소스 코드 오류 분석 장치 및 방법
US20240086310A1 (en) What-if analysis for notebooks
US9176846B1 (en) Validating correctness of expression evaluation within a debugger
Lawall et al. WYSIWIB: exploiting fine‐grained program structure in a scriptable API‐usage protocol‐finding process
Abate et al. Fully abstract and robust compilation: and how to reconcile the two, abstractly
US20230141948A1 (en) Analysis and Testing of Embedded Code
WO2019134771A1 (en) Binary image stack cookie protection
CN109284483A (zh) 文本处理方法、装置、存储介质及电子设备
CN109657247B (zh) 机器学习的自定义语法实现方法及装置
CN112667855B (zh) 区块链数据管理方法、电子设备及计算机存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
TA01 Transfer of patent application right

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Innovative advanced technology Co.,Ltd.

Address before: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant before: Advanced innovation technology Co.,Ltd.

Effective date of registration: 20200924

Address after: Cayman Enterprise Centre, 27 Hospital Road, George Town, Grand Cayman Islands

Applicant after: Advanced innovation technology Co.,Ltd.

Address before: A four-storey 847 mailbox in Grand Cayman Capital Building, British Cayman Islands

Applicant before: Alibaba Group Holding Ltd.

TA01 Transfer of patent application right
RJ01 Rejection of invention patent application after publication

Application publication date: 20180817

RJ01 Rejection of invention patent application after publication