CN106815135B - 漏洞检测方法及装置 - Google Patents

漏洞检测方法及装置 Download PDF

Info

Publication number
CN106815135B
CN106815135B CN201510855801.0A CN201510855801A CN106815135B CN 106815135 B CN106815135 B CN 106815135B CN 201510855801 A CN201510855801 A CN 201510855801A CN 106815135 B CN106815135 B CN 106815135B
Authority
CN
China
Prior art keywords
source code
code file
file
original
vulnerability
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.)
Active
Application number
CN201510855801.0A
Other languages
English (en)
Other versions
CN106815135A (zh
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.)
Alibaba Group Holding 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 CN201510855801.0A priority Critical patent/CN106815135B/zh
Publication of CN106815135A publication Critical patent/CN106815135A/zh
Application granted granted Critical
Publication of CN106815135B publication Critical patent/CN106815135B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种漏洞检测方法及装置。其中,该方法包括:获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断源码文件与原始源码文件是否相同;若不相同,获取源码文件中的、与原始源码文件不同的第一源码;将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。本申请解决了由于现有技术不能有效识别漏洞位置和修复的漏洞参数造成的需消耗较多人力进行漏洞分析的技术问题。

Description

漏洞检测方法及装置
技术领域
本申请涉及信息安全领域,具体而言,涉及一种漏洞检测方法及装置。
背景技术
近年来,随着互联网越来越多的应用走向开源化,应用程序出现漏洞机率也大大增加,厂商也会发布包含补丁的新版本来推出各种应用程序的漏洞修复方案。在新版本发布的过程中,相关人员需要知晓新版本修复的漏洞位置以及参数等,以确定新版本的安全性。
然而,目前的技术大多是通过简单监测补丁页面的消息,到相应的页面下载补丁,并且读取漏洞说明文件,被动地获取关于漏洞的一些信息,并不能有效识别漏洞位置和修复的漏洞参数,仅能通过人工进行漏洞分析。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种漏洞检测方法及装置,以至少解决由于现有技术不能有效识别漏洞位置和修复的漏洞参数造成的需消耗较多人力进行漏洞分析技术问题。
根据本申请实施例的一个方面,提供了一种漏洞检测方法,包括:获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断源码文件与原始源码文件是否相同;若不相同,获取源码文件中的、与原始源码文件不同的第一源码;将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。
根据本申请实施例的另一方面,还提供了一种漏洞检测装置,包括:第一获取单元,用于获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找单元,用于查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断单元,用于判断源码文件与原始源码文件是否相同;第二获取单元,用于若不相同,获取源码文件中的、与原始源码文件不同的第一源码;检测单元,用于将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。
在本申请实施例中,采用获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断源码文件与原始源码文件是否相同;若不相同,获取源码文件中的、与原始源码文件不同的第一源码;将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞的方式,通过从应用的源码文件入手,通过将源码文件与已存储的原始源码对比,找出发生变动的第一源码,进而根据漏洞修复特征模型匹配第一源码所修复的漏洞,达到了精确分析漏洞修复位置、类型以及参数的目的,从而实现了提高应用安全性的技术效果,进而解决了由于现有技术不能有效识别漏洞位置和修复的漏洞参数造成的需消耗较多人力进行漏洞分析的技术问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的一种运行漏洞检测方法的计算机终端的硬件结构框图;
图2是根据本申请实施例的一种漏洞检测方法的流程示意图;
图3是根据本申请实施例的另一种可选的漏洞检测方法的流程示意图;
图4是根据本申请实施例的一种漏洞检测装置的结构框图;
图5是根据本申请实施例的一种可选的判断单元的结构框图;
图6是根据本申请实施例的一种可选的第一获取单元的结构框图;
图7是根据本申请实施例的一种可选的第二获取单元的结构框图;以及
图8是根据本申请实施例的另一种可选的漏洞检测装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、***、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本申请实施例,还提供了一种漏洞检测方法的方法实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机***中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图1是本申请实施例的一种漏洞检测方法的计算机终端的硬件结构框图。如图1所示,计算机终端10可以包括一个或多个(图中仅示出一个)处理器102(处理器102可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器104、以及用于通信功能的传输装置106。本领域普通技术人员可以理解,图1所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端10还可包括比图1中所示更多或者更少的组件,或者具有与图1所示不同的配置。
存储器104可用于存储应用软件的软件程序以及模块,如本申请实施例中的漏洞检测方法对应的程序指令/模块,处理器102通过运行存储在存储器104内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的应用程序的漏洞检测方法。存储器104可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器104可进一步包括相对于处理器102远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端10。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置106用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端10的通信供应商提供的无线网络。在一个实例中,传输装置106包括一个网络适配器(Network Interface Controller,NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置106可以为射频(Radio Frequency,RF)模块,其用于通过无线方式与互联网进行通讯。
在上述运行环境下,本申请提供了如图2所示的漏洞检测方法。图2是根据本申请实施例一的漏洞检测方法的流程图。
步骤S202,获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息。
本申请步骤S202中,源码文件是指源代码的集合,源代码则是一组具有特定意义的可以实现特定功能的字符,标识信息可以为目标应用的名称,本实施例对此不作限定。
可选地,上述步骤S202,获取目标应用的源码文件的方法可以包括:爬取目标应用的下载地址;从下载地址中解析出目标应用的URL(Uniform Resource Locator,统一定位标识符);依据URL,下载源码文件。
具体地,定期爬取目标应用的下载地址,从下载地址中解析出目标应用的URL,并写入数据库以备后续使用。并且,可以根据该URL对资源可用性进行判断,排除资源不可用情况下对性能的影响,将可用资源进行标记写入数据库;在完成上述操作后,对依据URL,爬取目标应用的源码文件。
步骤S204,查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件。
本申请步骤S204中,判断标识信息是否已存储在数据库中,若未存储在数据库中,则新建文件、目录,并记录源码文件的Hash(哈希)值;若已存储在数据库中,并且已经记录过Hash值,则执行步骤S206。
需要说明的是,数据库中包含了定期爬取到的各个应用的源码文件,并记录有对应源码文件的Hash值、版本号、名称等。
以数据库中包含源码文件的Hash值、版本号、名称为例,具体内容如表1所示:
表1
Figure GDA0001426373980000041
Figure GDA0001426373980000051
步骤S206,判断源码文件与原始源码文件是否相同。
本申请步骤S206中,在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件,进而判断源码文件与原始源码文件是否相同,若不相同,则认定存在文件变动的情况。可选地,判断源码文件与原始源码文件是否相同包括:
步骤S10,读取源码文件中的Hash值以及原始源码文件中的Hash值。
以目标应用为淘点点为例,假设淘点点的源码文件的Hash值为value5,从数据库中(如表1所示)读取出淘点点的原始源码文件C的Hash值为value3。
步骤S12,判断源码文件中的Hash值与原始源码文件中的Hash值是否相同。
仍以目标应用为淘点点为例,对比value5与value3是否相同。
步骤S14,若源码文件中的Hash值与原始源码文件中的Hash值相同,则源码文件与原始源码文件相同;若源码文件中的Hash值与原始源码文件中的Hash值不相同,则源码文件与原始源码文件不相同。
仍以目标应用为淘点点为例,假设value5与value3不相同,则说明上述淘点点的源码文件与数据库中存储的淘点点的原始源码文件不相同,假设value5与value3相同,则说明上述淘点点的源码文件与数据库中存储的淘点点的原始源码文件相同。
本申请步骤S10至步骤S14中,可以通过判断Hash值是否相同来确定源码文件与原始源码文件是否相同。源码文件和原始源码文件中均包含对应的Hash值,若需判断Hash值是否相同,首先需从源码文件中读取源码文件的Hash值以及从原始源码文件中读取原始源码文件的Hash值。
进而,判断判断源码文件中的Hash值与原始源码文件中的Hash值是否相同,若源码文件中的Hash值与原始源码文件中的Hash值相同,则说明源码文件与原始源码文件相同;若源码文件中的Hash值与原始源码文件中的Hash值不相同,则说明源码文件与原始源码文件不相同,存在文件变动的情况。
步骤S208,若不相同,获取源码文件中的、与原始源码文件不同的第一源码。
本申请步骤S208中,在源码文件与原始源码文件不相同的情况下,本实施例的漏洞检测方法则需要去定位发生变动的具***置,确定源码文件中到底哪些源码发生了变动。可选地,获取源码文件中的、与原始源码文件不同的第一源码包括步骤S20至步骤S22。
步骤S20,分别对源码文件及原始源码文件进行解压。
本申请步骤S20,若源码文件与原始源码文件不相同,则说明源码文件与原始源码文件是相同应用的不同版本(即是目标应用的不同版本),为了精确分析漏洞修复位置、类型以及参数,首先需要对源码文件及原始源码文件进行解压。
步骤S22,遍历解压后的源码文件及解压后的原始源码文件,对比解压后的源码文件中的每个子文件与解压后的原始源码文件的每个子文件是否相同,以获得第一源码并记录第一源码的行号。
本申请步骤S22,解压完成后,对遍历解压后的源码文件及解压后的原始源码文件,对比解压后的源码文件中的每个子文件与解压后的原始源码文件的每个子文件是否相同,对比每个文件的变动,以获得第一源码,并记录变动的行号、内容等。
进一步地,将发生变动的第一源码存储至数据库,备份原始源码文件,将源码文件覆盖原始源码文件,等待下一次爬行。
步骤S210,将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。
本申请步骤S210中,在对比到源码文件及原始源码文件存在的差异时,根据预先对不同开发语言产生的漏洞库,建立的漏洞修复特征模型,该漏洞修复特征模型包括:SQL(Structured Query Language,结构化查询语言)注入、任意代码执行、变量覆盖、文件包含等各种漏洞修复文件,然后将第一源码分析至字符串,判断第一源码增加的是函数、赋值等操作,将第一源码与漏洞修复特征模型进行匹配,精确识别第一源码所修复的漏洞,具体地,识别出所修复的漏洞的位置、类型以及参数。
可选地,漏洞修复特征模型包含至少一个漏洞修复文件,漏洞修复文件至少用于修复以下一种或几种漏洞:SQL注入、任意源码执行、变量覆盖以及文件包含。
由上可知,本申请上述实施例一所提供的方案,通过从应用的源码文件入手,通过将源码文件与已存储的原始源码对比,找出发生变动的第一源码,进而根据漏洞修复特征模型匹配第一源码所修复的漏洞,达到了精确分析漏洞修复位置、类型以及参数的目的,从而实现了提高应用安全性的技术效果,进而解决了由于现有技术不能有效识别漏洞位置和修复的漏洞参数造成的需消耗较多人力进行漏洞分析的技术问题。
可选地,如图3所示,在判断源码文件与原始源码文件是否相同之后,方法还包括:
步骤S302,若不相同,获取原始源码文件中的、与源码文件不同的第二源码。
本申请步骤S302中,在源码文件与原始源码文件不相同的情况下,本实施例的漏洞检测方法还可以将原始源码文件中与源码文件不同的第二源码寻找出来。
步骤S304,将第一源码和第二源码分别与预先建立的后门特征库进行匹配,确定第一源码和第二源码是否被恶意植入后门。
本申请步骤S304中,通过将第一源码与后门特征库进行匹配,以及将第二源码与后门特征库进行匹配,确定第一源码和第二源码是否被恶意植入后门。其中,后门是指绕过安全性控制而获取对程序或***访问权的方法。
进一步地,通过遍历第一源码和第二源码,例如遍历:php(HypertextPreprocessor,超文本处理器)、c、asp(Active Server Page,动态服务器页面)、aspx(开发web应用程序的类库)、java、ruby(脚本语言)、python(一种面型对象、解释型计算机程序设计语言)等可编译或者可解析的文件,通过difflib的SequenceMatcher(序列匹配)库,判断源码文件相对于原始源码文件是采用了增加、删除还是修改操作。
由此可知,现有技术存在的不能有效识别漏洞位置和修复的漏洞参数造成的应用程序安全性较低的问题,本申请提出一种基于源码文件的漏洞检测方法,将源码文件与已存储的原始源码对比,找出发生变动的第一源码,进而根据漏洞修复特征模型匹配第一源码所修复的漏洞,达到了精确分析漏洞修复位置、类型以及参数的目的,从而实现了提高应用安全性的技术效果。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例的方法。
实施例2
根据本申请实施例,还提供了一种用于实施上述方法实施例的装置实施例,本申请上述实施例所提供的装置可以在计算机终端上运行。
图4是根据本申请实施例的漏洞检测装置的结构示意图。
如图4所示,该漏洞检测装置可以包括第一获取单元402、查找单元404、判断单元406、第二获取单元408以及检测单元410。
其中,第一获取单元402,用于获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找单元404,用于查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断单元406,用于判断源码文件与原始源码文件是否相同;第二获取单元408,用于若不相同,获取源码文件中的、与原始源码文件不同的第一源码;检测单元410,用于将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。
由上可知,本申请上述实施例二所提供的方案,通过从应用的源码文件入手,通过将源码文件与已存储的原始源码对比,找出发生变动的第一源码,进而根据漏洞修复特征模型匹配第一源码所修复的漏洞,达到了精确分析漏洞修复位置、类型以及参数的目的,从而实现了提高应用安全性的技术效果,进而解决了由于现有技术不能有效识别漏洞位置和修复的漏洞参数造成的需消耗较多人力进行漏洞分析的技术问题。
此处需要说明的是,上述第一获取单元402、查找单元404、判断单元406、第二获取单元408以及检测单元410对应于实施例一中的步骤S202至步骤S210,五个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中,可以通过软件实现,也可以通过硬件实现。
可选地,第二获取单元408,还用于若不相同,获取原始源码文件中的、与源码文件不同的第二源码;检测单元410,还用于将第一源码和第二源码分别与预先建立的后门特征库进行匹配,确定第一源码和第二源码是否被恶意植入后门。
可选地,如图5所示,判断单元406包括:读取模块502和判断模块504。
其中,读取模块502,用于读取源码文件中的哈希Hash值以及原始源码文件中的Hash值;判断模块504,用于判断源码文件中的Hash值与原始源码文件中的Hash值是否相同;若源码文件中的Hash值与原始源码文件中的Hash值相同,则源码文件与原始源码文件相同;若源码文件中的Hash值与原始源码文件中的Hash值不相同,则源码文件与原始源码文件不相同。
此处需要说明的是,上述读取模块502和判断模块504对应于实施例一中的步骤S10至步骤S14,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中,可以通过软件实现,也可以通过硬件实现。
可选地,如图6所示,第一获取单元402包括:爬取模块602、解析模块604以及下载模块606。
其中,爬取模块602,用于爬取目标应用的下载地址;解析模块604,用于从下载地址中解析出目标应用的统一定位标识符URL;下载模块606,用于依据URL,下载源码文件。
可选地,如图7所示,第二获取单元408包括:解压模块702和遍历模块704。
其中,解压模块702,用于分别对源码文件及原始源码文件进行解压;遍历模块704,用于遍历解压后的源码文件及解压后的原始源码文件,对比解压后的源码文件中的每个子文件与解压后的原始源码文件的每个子文件是否相同,以获得第一源码并记录第一源码的行号。
此处需要说明的是,上述解压模块702和遍历模块704对应于实施例一中的步骤S20至步骤S22,两个模块与对应的步骤所实现的示例和应用场景相同,但不限于上述实施例一所公开的内容。需要说明的是,上述模块作为装置的一部分可以运行在实施例一提供的计算机终端10中,可以通过软件实现,也可以通过硬件实现。
可选地,漏洞修复特征模型包含至少一个漏洞修复文件,漏洞修复文件至少用于修复以下一种或几种漏洞:结构化查询语言SQL注入、任意源码执行、变量覆盖以及文件包含。
由此可知,现有技术存在的不能有效识别漏洞位置和修复的漏洞参数造成的应用程序安全性较低的问题,本申请提出一种基于源码文件的漏洞检测方法,将源码文件与已存储的原始源码对比,找出发生变动的第一源码,进而根据漏洞修复特征模型匹配第一源码所修复的漏洞,达到了精确分析漏洞修复位置、类型以及参数的目的,从而实现了提高应用安全性的技术效果。
实施例3
根据本申请实施例,还提供了一种用于实施上述方法实施例的装置实施例,本申请上述实施例所提供的装置可以在计算机终端上运行。
图8是根据本申请实施例的漏洞检测装置的结构示意图。
如图8所示,该漏洞检测装置可以包括开源应用地址爬虫引擎802、资源可用性分析引擎804、下载引擎806、文件解压引擎808、文件变动分析引擎810以及核心漏洞分析引擎812。
第一部份,对源码变动的及时监测及漏洞文件分析。
针对大量的互联网应用程序在应用发布时存在文件名称随机化、下载链接随机化等特殊情况,开源应用地址爬虫引擎802以定期维护各应用URL池的爬取更新,写入数据库以备后续使用;资源可用性分析引擎804从开源应用地址爬虫引擎802维护的URL池进行读取,对资源可用性进行判断,排除资源不可用情况下对性能的影响,将可用资源进行标记写入数据库;在完成上述操作后,下载引擎806依据URL爬取各个应用对应的源码文件。判断源码文件是否已存储在数据库中文件资源池中,若未存储则新建文件、目录,并记录该源码文件的Hash值;若已存储在文件资源池中,并且已经记录过Hash值,则判断Hash值与数据库中原始源码文件的Hash值是否一致。当两个hash值不一致时,则认定存在文件变动情况。
当源码文件的Hash值与原始源码文件的Hash值不一致时,启动文件解压引擎808,对同应用的不同版本(即源码文件及原始源码文件)进行解压操作。完成解压后,文件变动分析引擎810开始工作,文件变动分析引擎810对源码文件及原始源码文件进行遍历,对比每个文件的变动,记录变动的行号、内容等。将具体的变动文件内容等写入数据库。备份老版本的应用,将新版本应用覆盖老版本应用,分析池结束,等待下一次爬行。
第二部份,核心自动化漏洞识别分析、参数定位。
在对比到文件差异时,启动核心漏洞分析引擎812。通过遍历第一源码以及第二源码,例如遍历:php、c、asp、aspx、java、ruby、python等可编译或者可解析的文件。分别将第一源码以及第二源码与后门特征库进行匹配,进行可疑后门扫描识别,判断第一源码以及第二源码中是否被恶意植入后门。通过difflib的SequenceMatcher库,遍历出所有不同的行,判断文件是增加、删除、修改操作。再次通过变动后的文件使用SequenceMatcher库,对第一源码进行遍历。建立一个漏洞修复特征模型,漏洞修复特征模型包括:SQL注入、任意代码执行、变量覆盖、文件包含等各种漏洞修复文件,然后将第一源码分析至字符串,判断第一源码相比于第二源码增加的是函数、赋值等操作,记录变更的变量等,将内容变动与漏洞修复特征模型进行匹配,精确识别第二源码所修复的漏洞。
通过以上两个部分,可以精确识别源码文件以及原始源码文件是否被植入后门,分析源码文件修复了的哪些漏洞,避免浪费大量的人工进行漏洞分析。
实施例4
本申请的实施例还提供了一种存储介质。可选地,在本实施例中,上述存储介质可以用于保存上述实施例一所提供的漏洞检测方法所执行的程序代码。
可选地,在本实施例中,上述存储介质可以位于计算机网络中计算机终端群中的任意一个计算机终端中,或者位于移动终端群中的任意一个移动终端中。
可选地,在本实施例中,存储介质被设置为存储用于执行以下步骤的程序代码:获取目标应用的源码文件,其中,源码文件包含目标应用的标识信息;查找标识信息是否已存储在数据库中,并在标识信息已存储在数据库的情况下,从数据库中提取与标识信息对应的原始源码文件;判断源码文件与原始源码文件是否相同;若不相同,获取源码文件中的、与原始源码文件不同的第一源码;将第一源码与预先建立的漏洞修复特征模型进行匹配,确定第一源码所修复的漏洞。
可选地,存储介质还被设置为存储用于执行以下步骤的程序代码:若不相同,获取原始源码文件中的、与源码文件不同的第二源码;将第一源码和第二源码分别与预先建立的后门特征库进行匹配,确定第一源码和第二源码是否被恶意植入后门。
可选地,读取源码文件中的哈希Hash值以及原始源码文件中的Hash值;判断源码文件中的Hash值与原始源码文件中的Hash值是否相同;若源码文件中的Hash值与原始源码文件中的Hash值相同,则源码文件与原始源码文件相同;若源码文件中的Hash值与原始源码文件中的Hash值不相同,则源码文件与原始源码文件不相同。
可选地,获取目标应用的源码文件包括:爬取目标应用的下载地址;从下载地址中解析出目标应用的统一定位标识符URL;依据URL,下载源码文件。
可选地,分别对源码文件及原始源码文件进行解压;遍历解压后的源码文件及解压后的原始源码文件,对比解压后的源码文件中的每个子文件与解压后的原始源码文件的每个子文件是否相同,以获得第一源码并记录第一源码的行号。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
可选地,本实施例中的具体示例可以参考上述实施例1中所描述的示例,本实施例在此不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
在本申请的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序源码的介质。
以上仅是本申请的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (10)

1.一种漏洞检测方法,其特征在于,包括:
获取目标应用的源码文件,其中,所述源码文件包含所述目标应用的标识信息;
查找所述标识信息是否已存储在数据库中,并在所述标识信息已存储在所述数据库的情况下,从所述数据库中提取与所述标识信息对应的原始源码文件;
判断所述源码文件与所述原始源码文件是否相同;
若不相同,获取所述源码文件中的、与所述原始源码文件不同的第一源码;
将所述第一源码与预先建立的漏洞修复特征模型进行匹配,确定所述第一源码所修复的漏洞的修复位置、修复操作类型及参数;所述漏洞修复特征模型包括至少一个漏洞修复文件,所述漏洞修复文件至少用于通过以下一种或几种修复操作类型进行漏洞修复:结构化查询语言SQL注入、任意源码执行、变量覆盖以及文件包含。
2.根据权利要求1所述的方法,其特征在于,在所述判断所述源码文件与所述原始源码文件是否相同之后,所述方法还包括:
若不相同,获取所述原始源码文件中的、与所述源码文件不同的第二源码;
将所述第一源码和所述第二源码分别与预先建立的后门特征库进行匹配,确定所述第一源码和所述第二源码是否被恶意植入后门。
3.根据权利要求1所述的方法,其特征在于,所述判断所述源码文件与所述原始源码文件是否相同包括:
读取所述源码文件中的哈希Hash值以及所述原始源码文件中的Hash值;
判断所述源码文件中的Hash值与所述原始源码文件中的Hash值是否相同;
若所述源码文件中的Hash值与所述原始源码文件中的Hash值相同,则所述源码文件与所述原始源码文件相同;
若所述源码文件中的Hash值与所述原始源码文件中的Hash值不相同,则所述源码文件与所述原始源码文件不相同。
4.根据权利要求1所述的方法,其特征在于,所述获取目标应用的源码文件包括:
爬取所述目标应用的下载地址;
从所述下载地址中解析出所述目标应用的统一定位标识符URL;
依据所述URL,下载所述源码文件。
5.根据权利要求1所述的方法,其特征在于,所述获取所述源码文件中的、与所述原始源码文件不同的第一源码包括:
分别对所述源码文件及所述原始源码文件进行解压;
遍历解压后的所述源码文件及解压后的所述原始源码文件,对比解压后的所述源码文件中的每个子文件与解压后的所述原始源码文件的每个子文件是否相同,以获得所述第一源码并记录所述第一源码的行号。
6.一种漏洞检测装置,其特征在于,包括:
第一获取单元,用于获取目标应用的源码文件,其中,所述源码文件包含所述目标应用的标识信息;
查找单元,用于查找所述标识信息是否已存储在数据库中,并在所述标识信息已存储在所述数据库的情况下,从所述数据库中提取与所述标识信息对应的原始源码文件;
判断单元,用于判断所述源码文件与所述原始源码文件是否相同;
第二获取单元,用于若不相同,获取所述源码文件中的、与所述原始源码文件不同的第一源码;
检测单元,用于将所述第一源码与预先建立的漏洞修复特征模型进行匹配,确定所述第一源码所修复的漏洞的修复位置、修复操作类型及参数;所述漏洞修复特征模型包括至少一个漏洞修复文件,所述漏洞修复文件至少用于通过以下一种或几种修复操作类型进行漏洞修复:结构化查询语言SQL注入、任意源码执行、变量覆盖以及文件包含。
7.根据权利要求6所述的装置,其特征在于,
所述第二获取单元,还用于若不相同,获取所述原始源码文件中的、与所述源码文件不同的第二源码;
所述检测单元,还用于将所述第一源码和所述第二源码分别与预先建立的后门特征库进行匹配,确定所述第一源码和所述第二源码是否被恶意植入后门。
8.根据权利要求6所述的装置,其特征在于,所述判断单元包括:
读取模块,用于读取所述源码文件中的哈希Hash值以及所述原始源码文件中的Hash值;
判断模块,用于判断所述源码文件中的Hash值与所述原始源码文件中的Hash值是否相同;若所述源码文件中的Hash值与所述原始源码文件中的Hash值相同,则所述源码文件与所述原始源码文件相同;若所述源码文件中的Hash值与所述原始源码文件中的Hash值不相同,则所述源码文件与所述原始源码文件不相同。
9.根据权利要求6所述的装置,其特征在于,所述第一获取单元包括:
爬取模块,用于爬取所述目标应用的下载地址;
解析模块,用于从所述下载地址中解析出所述目标应用的统一定位标识符URL;
下载模块,用于依据所述URL,下载所述源码文件。
10.根据权利要求6所述的装置,其特征在于,所述第二获取单元包括:
解压模块,用于分别对所述源码文件及所述原始源码文件进行解压;
遍历模块,用于遍历解压后的所述源码文件及解压后的所述原始源码文件,对比解压后的所述源码文件中的每个子文件与解压后的所述原始源码文件的每个子文件是否相同,以获得所述第一源码并记录所述第一源码的行号。
CN201510855801.0A 2015-11-30 2015-11-30 漏洞检测方法及装置 Active CN106815135B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510855801.0A CN106815135B (zh) 2015-11-30 2015-11-30 漏洞检测方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510855801.0A CN106815135B (zh) 2015-11-30 2015-11-30 漏洞检测方法及装置

Publications (2)

Publication Number Publication Date
CN106815135A CN106815135A (zh) 2017-06-09
CN106815135B true CN106815135B (zh) 2021-04-06

Family

ID=59156512

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510855801.0A Active CN106815135B (zh) 2015-11-30 2015-11-30 漏洞检测方法及装置

Country Status (1)

Country Link
CN (1) CN106815135B (zh)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109214188B (zh) * 2017-06-30 2022-05-27 阿里巴巴集团控股有限公司 一种漏洞分析方法和装置及数据处理方法和装置
CN109977675B (zh) * 2017-12-28 2022-08-16 超聚变数字技术有限公司 一种开源软件识别方法及装置
CN108399318B (zh) * 2018-01-31 2020-09-08 北京顶象技术有限公司 可执行文件的生成方法、执行方法及电子设备
CN109684847B (zh) * 2018-09-07 2023-05-23 平安科技(深圳)有限公司 脚本漏洞的自动修复方法、装置、设备及存储介质
CN109918285B (zh) * 2018-12-28 2022-08-09 奇安信科技集团股份有限公司 一种开源软件的安全识别方法及装置
CN109948334B (zh) * 2019-03-26 2024-02-23 深信服科技股份有限公司 一种漏洞检测方法、***及电子设备和存储介质
CN110348219A (zh) * 2019-06-13 2019-10-18 晶晨半导体(上海)股份有限公司 版本比对方法、***、计算机设备及可读存储介质
CN111666564B (zh) * 2020-05-14 2024-02-02 平安科技(深圳)有限公司 应用程序安全启动方法、装置、计算机设备和存储介质
CN113341901B (zh) * 2021-06-25 2022-04-01 青岛沃柏斯智能实验科技有限公司 一种基于实验工艺的多设备集成控制方法及***
CN117235744B (zh) * 2023-11-14 2024-02-02 中关村科学城城市大脑股份有限公司 源文件上线方法、装置、电子设备和计算机可读介质

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070016894A1 (en) * 2005-07-15 2007-01-18 Sreedhar Vugranam C System and method for static analysis using fault paths
KR100916329B1 (ko) * 2007-11-01 2009-09-11 한국전자통신연구원 소프트웨어 취약점 점검 장치 및 방법
US8336034B2 (en) * 2009-04-30 2012-12-18 Nec Laboratories America, Inc. Modular bug detection with inertial refinement
CN101706749B (zh) * 2009-11-18 2011-12-21 电子科技大学 基于软件安全缺陷检测的综合处理方法
CN103577319A (zh) * 2012-08-07 2014-02-12 腾讯科技(深圳)有限公司 源代码文件检测方法及装置、文件发布***
CN104298923B (zh) * 2014-09-28 2018-01-02 北京奇虎科技有限公司 漏洞类型识别方法以及装置
CN104573525B (zh) * 2014-12-19 2017-10-31 中国航天科工集团第二研究院七〇六所 一种基于白名单的专用信息服务软件漏洞修复***
CN104699611B (zh) * 2015-03-18 2017-07-28 北京航空航天大学 一种基于开源软件缺陷代码修改模式的缺陷信息提取方法

Also Published As

Publication number Publication date
CN106815135A (zh) 2017-06-09

Similar Documents

Publication Publication Date Title
CN106815135B (zh) 漏洞检测方法及装置
CN107657177B (zh) 一种漏洞检测方法及装置
CN106295348B (zh) 应用程序的漏洞检测方法及装置
KR101582601B1 (ko) 액티비티 문자열 분석에 의한 안드로이드 악성코드 검출 방법
CN112039900B (zh) 网络安全风险检测方法、***、计算机设备和存储介质
CN113835713B (zh) 源码包下载方法、装置、计算机设备和存储介质
CN111835756A (zh) App隐私合规检测方法、装置、计算机设备及存储介质
CN107632901A (zh) 一种应用程序运行异常的自修复方法及装置
CN114386032A (zh) 电力物联网设备的固件检测***及方法
CN112363937A (zh) 差异覆盖率测试方法、装置、计算机设备和存储介质
CN108494728B (zh) 防止流量劫持的黑名单库创建方法、装置、设备及介质
CN113961936A (zh) 可信白名单建设方法、***、装置和计算机设备
CN115033894A (zh) 一种基于知识图谱的软件组件供应链安全检测方法及装置
CN106529281A (zh) 一种可执行文件处理方法及装置
CN111290747B (zh) 一种创建函数钩子的方法、***、设备及介质
CN113591079B (zh) 获取异常应用安装包的方法、装置及电子设备
CN116795486A (zh) 一种容器镜像文件提纯的分析方法、装置、存储介质及终端
CN113297583B (zh) 漏洞风险分析方法、装置、设备及存储介质
CN112560030A (zh) 文件监控方法、装置、电子设备和计算机可读存储介质
CN113031995B (zh) 一种更新规则的方法、装置、存储介质以及电子设备
CN114417347A (zh) 应用程序的漏洞检测方法、装置、设备、存储介质和程序
CN110377499B (zh) 一种对应用程序进行测试的方法及装置
CN107203706B (zh) App内部权限的检测方法及装置
CN110704483A (zh) 用户路由流程定位方法、设备、存储介质及装置
CN109284609B (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
GR01 Patent grant
GR01 Patent grant