CN105279078A - 安全漏洞检测方法和装置 - Google Patents
安全漏洞检测方法和装置 Download PDFInfo
- Publication number
- CN105279078A CN105279078A CN201410290871.1A CN201410290871A CN105279078A CN 105279078 A CN105279078 A CN 105279078A CN 201410290871 A CN201410290871 A CN 201410290871A CN 105279078 A CN105279078 A CN 105279078A
- Authority
- CN
- China
- Prior art keywords
- application
- match information
- file
- security breaches
- instruction
- 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
Links
Landscapes
- Storage Device Security (AREA)
Abstract
本发明公开了一种安全漏洞检测方法和装置。其中,该方法包括:获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件;判断一个或多个文件中是否存在包含第一匹配信息的匹配文件;若存在匹配文件,则检测出第一应用存在安全漏洞。本发明解决了现有的安全漏洞检测方案耗时较长、成本较高的技术问题。
Description
技术领域
本发明涉及计算机安全领域,具体而言,涉及一种安全漏洞检测方法和装置。
背景技术
在计算机领域中,安全漏洞通常可以表示在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而使得恶意攻击者能够在未授权的情况下访问或破坏系统,具体地,对于应用在运行中可能存在的安全漏洞来说,该安全漏洞通常出现在软件或协议上,更具体地,出现在应用对应的程序代码上,例如最一般地,程序代码中的某些指令便可能带来安全漏洞,比如一些常用的随机数生成指令。对于随机数生成算法来说,由于计算机算法通常是确定的,因此随机数生成算法通常无法做到真正的统计随机,比如常用的由C语言的库函数中的rand()这一指令所指示的随机数生成算法,该算法容易实现且执行速度较快,但随机性较差,因此结合在某些加密算法中时边可能导致加密算法易于破解,若某一应用采用了该算法,则会产生生成的密码安全性较差的风险。
由于此类应用的保密性质,其程序代码通常难以直接从内存中读取。在这一前提下,为了达到检测应用的安全漏洞的目的,为发明人所知的一种解决方案是结合测试软件对运行中的应用进行测试,具体来说,通常是模拟应用的各种运行场景,并基于应用的运行结果进行检测,例如,对于随机数生成算法来说,可以通过待检测的应用生成多个密钥或者是对不同文字进行加密,如果测试软件能够基于密钥或加密结果破解出该随机数生成算法或结合有该随机数生成算法的加密算法,则检测出应用存在安全漏洞。然而,这种检测方案通常需要对应用进行大量测试,并基于多次测试得到的大量事实样本来检测应用是否存在安全漏洞,这显然会导致检测周期较长、成本较高的问题。针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种安全漏洞检测方法和装置,以至少解决现有的安全漏洞检测方案耗时较长、成本较高的技术问题。
根据本发明实施例的一个方面,提供了一种安全漏洞检测方法,包括:获取第一应用的应用安装包和第一匹配信息,其中,上述应用安装包用于安装上述第一应用,上述第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;从上述应用安装包中获取记录有运行上述第一应用时所需执行的指令的一个或多个文件;判断上述一个或多个文件中是否存在包含上述第一匹配信息的匹配文件;若存在上述匹配文件,则检测出上述第一应用存在安全漏洞。
根据本发明实施例的另一方面,还提供了一种安全漏洞检测装置,包括:第一获取单元,用于获取第一应用的应用安装包和第一匹配信息,其中,上述应用安装包用于安装上述第一应用,上述第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;第二获取单元,用于从上述应用安装包中获取记录有运行上述第一应用时所需执行的指令的一个或多个文件;第一判断单元,用于判断上述一个或多个文件中是否存在包含上述第一匹配信息的匹配文件;输出单元,用于在存在上述匹配文件时,检测出上述第一应用存在安全漏洞。
在本发明实施例中,采用了对第一应用对应的应用安装包进行处理和分析的方式来达到对第一应用进行检测的目的。具体地,在本发明实施例中,可以先获取第一应用的应用安装包,并从该应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件,进而通过该一个或多个文件与匹配信息也即第一匹配信息之间的匹配分析来检测应用是否存在安全隐患,其中,该匹配信息可以来自于对其他应用也即第二应用的学习结果或者说经验结果。由于该第一匹配信息可以预先获取,因此对第一应用是否存在安全漏洞的检测过程中的耗时主要来自于对第一应用安装包的解析和后续的匹配分析处理,这就避免了重复多次测试带来的时间和资源成本,达到了快速、高效地对应用进行安全漏洞检测的效果,进而解决了现有的安全漏洞检测方案耗时较长、成本较高的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明实施例的一种可选的安全漏洞检测方法的示意图;
图2是根据本发明实施例的一种可选的安全漏洞检测方法或装置的实施环境的示意图;
图3是根据本发明实施例的另一种可选的安全漏洞检测方法的示意图;
图4是根据本发明实施例的一种可选的安全漏洞检测装置的示意图;
图5是根据本发明实施例的一种可选的存储介质中存储的程序代码所执行的操作步骤的示意图;
图6是根据本发明实施例的一种可选的服务器的示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
实施例1
根据本发明实施例,提供了一种安全漏洞检测方法,如图1所示,该方法包括:
S102:获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;
S104:从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件;
S106:判断一个或多个文件中是否存在包含第一匹配信息的匹配文件;
S108:若存在匹配文件,则检测出第一应用存在安全漏洞。
应当明确的是,本发明实施例所要解决的问题之一是提供一种方法,以便于对应用(application)在运行中可能存在的安全漏洞或者说漏洞进行有效检测。
具体地,在本发明实施例中,应用通常可以表示安装并运行在如智能手机等终端设备上软件,更具体地,该应用可以运行于安装在终端设备上的操作系统中,然而本发明对此不作限定。当然,这只是一种示例,并不会对本发明构成不必要的限定,例如在本发明的一些实施例中,该应用也可以安装并运行在智能手机以外的其他终端设备上,比如个人电脑或平板电脑等,或者,该应用还可以安装并运行在服务器所在的计算机或计算机系统上,以便于使运行有该应用的设备执行由该应用对应的指令所指示的操作,并实现该应用预定的功能,其中,运行在不同的设备上的应用也可以具有其他称谓,换而言之,本发明实施例中所描述的应用包括但并不限于是具有“应用”这一具体称谓的软件或程序。
在另一方面,在计算机领域中,安全漏洞通常可以表示在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而使得恶意攻击者能够在未授权的情况下访问或破坏系统,具体地,对于应用在运行中可能存在的安全漏洞来说,该安全漏洞通常出现在软件或协议上,更具体地,出现在应用对应的程序代码上,例如最一般地,程序代码中的某些指令便可能带来安全漏洞,比如一些常用的随机数生成指令。对于随机数生成算法来说,由于计算机算法通常是确定的,因此随机数生成算法通常无法做到真正的统计随机,比如常用的由C语言的库函数中的rand()这一指令所指示的随机数生成算法,该算法容易实现且执行速度较快,但随机性较差,因此结合在某些加密算法中时边可能导致加密算法易于破解,若某一应用采用了该算法,则会产生生成的密码安全性较差的风险。
由于此类应用的保密性质,其程序代码通常难以直接从内存中读取。在这一前提下,为了达到检测应用的安全漏洞的目的,为发明人所知的一种解决方案是结合测试软件对运行中的应用进行测试,具体来说,通常是模拟应用的各种运行场景,并基于应用的运行结果进行检测,例如,对于随机数生成算法来说,可以通过待检测的应用生成多个密钥或者是对不同文字进行加密,如果测试软件能够基于密钥或加密结果破解出该随机数生成算法或结合有该随机数生成算法的加密算法,则检测出应用存在安全漏洞。然而,这种检测方案通常需要对应用进行大量测试,并基于多次测试得到的大量事实样本来检测应用是否存在安全漏洞,这显然会导致检测周期较长、成本较高的问题。
为解决上述问题,在本发明实施例中,采用了对待检测的应用对应的应用安装包进行处理和分析的方式来达到对应用进行检测的目的,其中,为表述方便,以下将待检测的应用记为第一应用。具体地,在本发明实施例中,可以先获取第一应用的应用安装包,并从该应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件,进而通过该一个或多个文件与匹配信息也即第一匹配信息之间的匹配分析来检测应用是否存在安全隐患,其中,该匹配信息可以来自于对其他应用也即第二应用的学习结果或者说经验结果。由于该第一匹配信息可以预先获取,因此对第一应用是否存在安全漏洞的检测过程中的耗时主要来自于对第一应用安装包的解析和后续的匹配分析处理,这就避免了重复多次测试带来的时间成本和资源成本,达到了快速、高效地对应用进行安全漏洞检测的效果,进而解决了现有的安全漏洞检测方案耗时较长、成本较高的技术问题。
以下将结合附图和具体的实施例对本发明技术方案进行描述。首先,将结合图2对根据本发明实施例提供的检测方法的一种可行的实施环境进行描述。
在图2中,下载服务器202可以是用于提供应用下载服务的服务器,具体地,客户端208、210和212可以向下载服务器202发送请求消息,以便于从该下载服务器202下载所需应用的应用安装包及相应的协议,具体地,该应用安装包可以用于安装对应的应用,该协议可以用于支持客户端208、210和212与应用服务器206之间的交互,其中,206应用服务器可以是用于提供与应用相关的业务功能的服务器。
例如,在一个场景下,下载服务器202可以是用于提供应用商店业务的服务器,对应地,客户端208、210和212均可以包括应用商店客户端,例如安卓市场、AppStore等。在上述场景下,若通过任一客户端下载了某款应用,比如通过客户端208下载了一款在线游戏的应用安装包,则客户端所在的设备可以在运行该应用安装包以安装对应的游戏客户端,并通过客户端208进一步地与应用服务器206之间进行游戏业务数据的交互,其中,该客户端208可以将上述应用商店客户端和上述游戏客户端均包含在内。
在此基础上,如图2所示,还可以设置有后台服务器204,该后台服务器204可以用于提供数据安全服务。具体地,在本发明实施例中,后台服务器204可以与下载服务器202、应用服务器206以及客户端208、210和212之中的一个或多个存在数据连接,以便于接收连接后台服务器204的服务器或客户端上传的应用安装包,进而后台服务器204可以对应用安装包进行匹配分析处理,并向相连接的设备反馈安全漏洞的检测结果。
例如,在一个场景下,下载服务器202定期地或者在检测到某个应用存在更新时,向后台服务器204发送第一应用例如更新的应用对应的应用安装包,并且还可以向后台服务器204发送该第一应用所属的类型对应的缺陷匹配信息作为第一匹配信息。当然,这只是一种示例,在一些实施例中,后台服务器204也可以维护有一个或多个缺陷匹配信息,并形成匹配列表,本发明对此不作限定。进一步地,后台服务器204可以对应用安装包进行解析以获取其中的记录有运行第一应用时所需执行的指令的一个或多个文件,进而在一个或多个文件的内容与匹配信息之间进行匹配,若存在匹配文件,则可以认为该应用安装包及其对应的应用存在安全漏洞,从而向下载服务器202返回这一检测结果。
当然,以上只是一种示例,并不意味着对本发明构成了限定。具体来说,如图2所示,后台服务器204可以与下载服务器202、应用服务器206、客户端208、210和212之中的任意一个或多个连接并向该任意一个提供具有针对应用的安全漏洞进行检测的功能的数据安全服务。此外,在本发明的一些实施例中,该后台服务器204所提供的安全漏洞检测功能也可以封装为内置或外挂的模块并设置在下载服务器202、应用服务器206、客户端208、210和212之中的任意一个或多个上,例如,下载服务器202也可以设置有缺陷检测的模块,以避免向用户提供存在安全漏洞的应用的下载等,本发明对此不作任何限定。
需要说明的是,本发明通过以上描述提供了一种本发明技术方案的可行的实施环境,然而应当理解的是,以上描述仅仅是一种示例性的描述,以便于对本发明技术方案及其工作环境的理解,而不应视为是对本发明的限定。具体地,根据本发明实施例提供的安全漏洞检测方法还可以实施于多种可行的其他硬件或系统环境中,本发明在此不一一累述。
在上述环境下,根据本发明实施例提供的检测方法,在步骤S102中,用于提供数据安全服务的后台服务器可以获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令。
在本发明实施例中,第一应用可以表示待检测的应用,第二应用并不特指某一应用,其可以表示任意一个应用。具体地,第一匹配信息既可以是基于对具体的某一个或多个第二应用的运行进行监测学习的结果,比如该第一匹配信息可以是通过对第二应用的测试所得出的在执行时存在安全漏洞的指令的特征信息。在另一方面,第一匹配信息还可以包括技术人员基于对现有的应用及这些应用的执行逻辑和运行情况的了解从而能够合理预期的在执行时存在安全漏洞的指令的特征信息。
具体地,在本发明实施例中,第一应用的应用安装包可以是安卓安装包,也即APK(AndroidPackage)包,其中,该APK包可以用来安装运行在安卓系统下的各类应用。然而本发明对此不作限定,例如,在一些实施例中,该应用安装包也可以是iPhone程序IPA(iPhoneApplication)包等,这并不影响本发明技术方案的实施及其技术效果的实现,类似地实施方式也均应视为在本发明的保护范围之内。
事实上,无论是APK包还是IPA包,其实质上都是一个zip压缩包,在具体安装时,这些压缩包会被放入系统中预定的文件夹内,以便于获取对这些压缩包进行解压缩并安装对应的应用的权限。换而言之,对于第一应用的应用安装包来说,运行第一应用时所需执行的指令可以通过对其应用安装包的解析来获取,在获取的指令以及记录有这些指令的文件相比于运行第一应用时实际执行的指令以及应用安装包中实际压缩的文件的还原度较高时,通过对解析应用安装包所获取的上述一个或多个文件的匹配分析便可以判断出第一应用是否存在安全漏洞。
也即,根据本发明实施例提供的检测方法,在步骤S104中,后台服务器可以从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件,并通过步骤S106判断该一个或多个文件中是否存在包含第一匹配信息的匹配文件,进而通过步骤S108,在判断出存在匹配文件时,检测出第一应用存在安全漏洞。
具体地,在本发明实施例中,可以采用多种具体的匹配逻辑来判断该一个或多个文件中是否存在该匹配文件,以达到不同等级的检测效果并输出侧重点不同的输出结果。例如可选地,在一个实施例中,上述步骤S106可以包括:
S2、判断一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息;其中,
步骤S108可以包括:
S4、若每一行记录中存在任意一行记录包含任意一个匹配信息,则检测出第一应用存在安全漏洞,并输出包含任意一个匹配信息的文件的文件名和/或任意一行的行号。
例如,在一个实施例中,安全漏洞检测所针对的安全漏洞可以包括随机数漏洞,也即随机数生成指令可能导致生成的随机数的随机性较差且易于破解的缺陷,对应地,第一匹配信息可以用于指示伪随机数生成指令,比如,该第一匹配信息可以包括字符串“SecureRandom.setSeed”或者字符串“SecureRandom”。具体地,在Java语言中,SecureRandom用于提供随机数加密功能,或者说使用该指令可以基于给定的随机数生成加密后的随机性更强的随机数,然而在不确定该指令所采用的给定的随机数也即随机数的“种子”的随机性优劣的前提下,执行该指令所生成的随机数的分布距离真正的随机分布仍可能有较大差距,换而言之,容易产生随机数漏洞,进而导致安全风险。
在这一前提下,则可以将执行时存在安全漏洞的指令的代码,比如SecureRandom.setSeed和/或SecureRandom作为第一匹配信息。值得注意的是,在上述场景下,若采用字符串“SecureRandom”作为第一匹配信息,则通过这一第一匹配信息也可以匹配到记录有指令SecureRandom.setSeed的匹配文件。在这一情形下,字符串“SecureRandom”也可以视为是指令SecureRandom.setSeed的特征信息,换而言之,在本发明实施例中,第一匹配信息并不仅限于是指令本身。
进一步地,则可以通过步骤S2判断从应用安装包中获取的一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息。例如,若利用用于对APK包中压缩的classes.dex进行反编译的工具软件baksmali.jar从第一应用的应用安装包中解析出以下文件:Main$1.smali、Main$2.smali和Main$3.smali,其中,“Main$1.smali”、“Main$2.smali”和“Main$3.smali”均表示文件名,并且文件Main$3.smali中的第88行记录的代码包含第一匹配信息,如字符串“SecureRandom”,则可以检测出第一应用存在安全漏洞,并通过步骤S4输出包含该第一匹配信息的文件的文件名“Main$3.smali”以及存在安全漏洞的指令所在的行的行号“88”。
进一步可选地,在本发明实施例中,上述步骤S108还可以包括:
S6、若该每一行记录中存在该任意一行记录包含该任意一个匹配信息,则查找与该任意一个匹配信息对应的缺陷描述信息,其中,缺陷描述信息用于描述在执行由任意一个匹配信息指示的指令时所存在的安全漏洞;其中,
步骤S4可以包括:
S8、将查找到的缺陷描述信息标记为与文件名和/或行号对应,并输出文件名和/或行号以及对应的缺陷描述信息。
在本发明实施例中,维护在后台服务器的本地或外部的第一匹配信息可以对应有用于描述该匹配信息所指示的存在安全漏洞的指令的缺陷描述信息。例如对于述实施例,第一匹配信息可以是字符串“SecureRandom”,其对应的缺陷描述信息可以是“存在随机数漏洞”。在上述场景下,若检测出存在与字符串“SecureRandom”匹配的匹配文件Main$3.smali,则可以输出文件名“Main$3.smali”、缺陷行号“88”和缺陷匹配信息“存在随机数漏洞”,以便于运维管理人员的读取和/或后续处理操作。
在以上描述的基础上,如图3所示,作为进一步可选的方式,在本发明实施例中,在步骤S108之前,上述方法还可以包括:
S302:若存在匹配文件,则判断匹配文件是否包含第二匹配信息,其中,第二匹配信息用于指示在运行第二应用时执行的修复安全漏洞的指令;其中,
步骤S108可以包括:
S304:若匹配文件未包含第二匹配信息,则检测出第一应用存在安全漏洞。
在本发明实施例中,基于第一匹配信息进行匹配分析以判断第一应用是否存在安全漏洞的方式可能会出现过度判断的情况。例如,对于作为第一匹配信息的字符串“SecureRandom”来说,若将其所指示的随机数生成指令SecureRandom与unix系统提供的加强随机数生成方法如/dev/random或/dev/urandom相结合,比如在SecureRandom方法中采用/dev/urandom方法来生成随机数“种子”,则由于上述加强随机数生成算法的随机性较好,则在安全漏洞的检测过程中,也可以不对记录有加强随机数生成指令的文件进行响应,也即,若第一应用的应用安装包中解析出的文件中既包含字符串“SecureRandom”又包含字符串“/dev/random”,而且不存在仅包含字符串“SecureRandom”且未包含字符串“/dev/random”的文件,则可以检测出第一应用不存在安全漏洞。在另一方面,若存在包含字符串“SecureRandom”的匹配文件,且该匹配文件未包含字符串“/dev/random”或“/dev/urandom”,则可以检测出第一应用存在安全漏洞。由此可见,在本发明实施例中,上述修复安全漏洞的指令可以包括加强随机数生成指令,第二匹配信息可以包括字符串“dev/urandom”或者“/dev/random”。
除此之外,在本发明实施例中,步骤S104中所描述的从应用安装包中获取上述一个或多个文件的具体方式可以有多种,一般地,作为一种可选的方式,在本发明实施例中,上述步骤S104可以包括:
S10、从应用安装包中解压缩出类文件集;
S12、对类文件集进行反编译并获取一个或多个编译文件;
S14、将一个或多个编译文件作为上述一个或多个文件,和/或,在一个或多个编译文件中获取上述一个或多个文件。
例如,在一个实施例中,应用安装包可以是安卓安装包APK包,从中解压缩得到的类文件集可以包括多个类文件,或者说class类型文件。更具体地,对于解压缩操作和类文件集的获取来说,作为一种可行的方式,在本发明实施例中,上述步骤S10可以包括:
S16、从APK包中解压缩出classes.dex文件;
S18、将classes.dex文件转换为jar类型文件,其中,jar类型文件表示Java归档文件;
S20、从转换出的jar类型文件中解压缩出一个或多个类文件并形成类文件集。
通过上述实施例,对本发明技术方案进行了描述,然而应当理解的是,上述实施例仅用于对本发明技术方案的理解,并不会对本发明构成限定。例如,上述实施例中具体以安卓系统下的APK包为例对根据本发明实施例提供的安全漏洞检测方法的各步骤进行了具体描述,然而这并非是本发明唯一的实施方式,其还可以利用相似的处理流程实施于IOS系统下的IPA包或其他现行或未来的可行的应用安装包,并基于对应用安装包的匹配分析来判断对应的第一应用是否存在安全漏洞,本发明对此不作限定。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
实施例2
根据本发明实施例,还提供了一种用于实施如实施例1中所描述的检测方法的安全漏洞检测装置,如图4所示,该装置包括:
1)第一获取单元402,用于获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;
2)第二获取单元404,用于从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件;
3)第一判断单元406,用于判断一个或多个文件中是否存在包含第一匹配信息的匹配文件;
4)输出单元408,用于在存在匹配文件时,检测出第一应用存在安全漏洞。
应当明确的是,本发明实施例所要解决的问题之一是提供一种装置,以便于对应用(application)在运行中可能存在的安全漏洞或者说漏洞进行有效检测。
具体地,在本发明实施例中,应用通常可以表示安装并运行在如智能手机等终端设备上软件,更具体地,该应用可以运行于安装在终端设备上的操作系统中,然而本发明对此不作限定。当然,这只是一种示例,并不会对本发明构成不必要的限定,例如在本发明的一些实施例中,该应用也可以安装并运行在智能手机以外的其他终端设备上,比如个人电脑或平板电脑等,或者,该应用还可以安装并运行在服务器所在的计算机或计算机系统上,以便于使运行有该应用的设备执行由该应用对应的指令所指示的操作,并实现该应用预定的功能,其中,运行在不同的设备上的应用也可以具有其他称谓,换而言之,本发明实施例中所描述的应用包括但并不限于是具有“应用”这一具体称谓的软件或程序。
在另一方面,在计算机领域中,安全漏洞通常可以表示在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而使得恶意攻击者能够在未授权的情况下访问或破坏系统,具体地,对于应用在运行中可能存在的安全漏洞来说,该安全漏洞通常出现在软件或协议上,更具体地,出现在应用对应的程序代码上,例如最一般地,程序代码中的某些指令便可能带来安全漏洞,比如一些常用的随机数生成指令。对于随机数生成算法来说,由于计算机算法通常是确定的,因此随机数生成算法通常无法做到真正的统计随机,比如常用的由C语言的库函数中的rand()这一指令所指示的随机数生成算法,该算法容易实现且执行速度较快,但随机性较差,因此结合在某些加密算法中时边可能导致加密算法易于破解,若某一应用采用了该算法,则会产生生成的密码安全性较差的风险。
由于此类应用的保密性质,其程序代码通常难以直接从内存中读取。在这一前提下,为了达到检测应用的安全漏洞的目的,为发明人所知的一种解决方案是结合测试软件对运行中的应用进行测试,具体来说,通常是模拟应用的各种运行场景,并基于应用的运行结果进行检测,例如,对于随机数生成算法来说,可以通过待检测的应用生成多个密钥或者是对不同文字进行加密,如果测试软件能够基于密钥或加密结果破解出该随机数生成算法或结合有该随机数生成算法的加密算法,则检测出应用存在安全漏洞。然而,这种检测方案通常需要对应用进行大量测试,并基于多次测试得到的大量事实样本来检测应用是否存在安全漏洞,这显然会导致检测周期较长、成本较高的问题。
为解决上述问题,在本发明实施例中,采用了对待检测的应用对应的应用安装包进行处理和分析的方式来达到对应用进行检测的目的,其中,为表述方便,以下将待检测的应用记为第一应用。具体地,在本发明实施例中,可以先获取第一应用的应用安装包,并从该应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件,进而通过该一个或多个文件与匹配信息也即第一匹配信息之间的匹配分析来检测应用是否存在安全隐患,其中,该匹配信息可以来自于对其他应用也即第二应用的学习结果或者说经验结果。由于该第一匹配信息可以预先获取,因此对第一应用是否存在安全漏洞的检测过程中的耗时主要来自于对第一应用安装包的解析和后续的匹配分析处理,这就避免了重复多次测试带来的时间成本和资源成本,达到了快速、高效地对应用进行安全漏洞检测的效果,进而解决了现有的安全漏洞检测方案耗时较长、成本较高的技术问题。
以下将结合附图和具体的实施例对本发明技术方案进行描述。首先,将结合图2对根据本发明实施例提供的检测装置的一种可行的实施环境进行描述。
在图2中,下载服务器202可以是用于提供应用下载服务的服务器,具体地,客户端208、210和212可以向下载服务器202发送请求消息,以便于从该下载服务器202下载所需应用的应用安装包及相应的协议,具体地,该应用安装包可以用于安装对应的应用,该协议可以用于支持客户端208、210和212与应用服务器206之间的交互,其中,206应用服务器可以是用于提供与应用相关的业务功能的服务器。
例如,在一个场景下,下载服务器202可以是用于提供应用商店业务的服务器,对应地,客户端208、210和212均可以包括应用商店客户端,例如安卓市场、AppStore等。在上述场景下,若通过任一客户端下载了某款应用,比如通过客户端208下载了一款在线游戏的应用安装包,则客户端所在的设备可以在运行该应用安装包以安装对应的游戏客户端,并通过客户端208进一步地与应用服务器206之间进行游戏业务数据的交互,其中,该客户端208可以将上述应用商店客户端和上述游戏客户端均包含在内。
在此基础上,如图2所示,还可以设置有后台服务器204,该后台服务器204可以用于提供数据安全服务。具体地,在本发明实施例中,后台服务器204可以与下载服务器202、应用服务器206以及客户端208、210和212之中的一个或多个存在数据连接,以便于接收连接后台服务器204的服务器或客户端上传的应用安装包,进而后台服务器204可以对应用安装包进行匹配分析处理,并向相连接的设备反馈安全漏洞的检测结果。
例如,在一个场景下,下载服务器202定期地或者在检测到某个应用存在更新时,向后台服务器204发送第一应用例如更新的应用对应的应用安装包,并且还可以向后台服务器204发送该第一应用所属的类型对应的缺陷匹配信息作为第一匹配信息。当然,这只是一种示例,在一些实施例中,后台服务器204也可以维护有一个或多个缺陷匹配信息,并形成匹配列表,本发明对此不作限定。进一步地,后台服务器204可以对应用安装包进行解析以获取其中的记录有运行第一应用时所需执行的指令的一个或多个文件,进而在一个或多个文件的内容与匹配信息之间进行匹配,若存在匹配文件,则可以认为该应用安装包及其对应的应用存在安全漏洞,从而向下载服务器202返回这一检测结果。
当然,以上只是一种示例,并不意味着对本发明构成了限定。具体来说,如图2所示,后台服务器204可以与下载服务器202、应用服务器206、客户端208、210和212之中的任意一个或多个连接并向该任意一个提供具有针对应用的安全漏洞进行检测的功能的数据安全服务。此外,在本发明的一些实施例中,该后台服务器204所提供的安全漏洞检测功能也可以封装为内置或外挂的模块并设置在下载服务器202、应用服务器206、客户端208、210和212之中的任意一个或多个上,例如,下载服务器202也可以设置有缺陷检测的模块,以避免向用户提供存在安全漏洞的应用的下载等,本发明对此不作任何限定。
需要说明的是,本发明通过以上描述提供了一种本发明技术方案的可行的实施环境,然而应当理解的是,以上描述仅仅是一种示例性的描述,以便于对本发明技术方案及其工作环境的理解,而不应视为是对本发明的限定。具体地,根据本发明实施例提供的安全漏洞检测装置还可以实施于多种可行的其他硬件或系统环境中,本发明在此不一一累述。
在上述环境下,根据本发明实施例提供的检测装置,该装置所在的用于提供数据安全服务的后台服务器可以通过第一获取单元402来获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令。
在本发明实施例中,第一应用可以表示待检测的应用,第二应用并不特指某一应用,其可以表示任意一个应用。具体地,第一匹配信息既可以是基于对具体的某一个或多个第二应用的运行进行监测学习的结果,比如该第一匹配信息可以是通过对第二应用的测试所得出的在执行时存在安全漏洞的指令的特征信息。在另一方面,第一匹配信息还可以包括技术人员基于对现有的应用及这些应用的执行逻辑和运行情况的了解从而能够合理预期的在执行时存在安全漏洞的指令的特征信息。
具体地,在本发明实施例中,第一应用的应用安装包可以是安卓安装包,也即APK包,其中,该APK包可以用来安装运行在安卓系统下的各类应用。然而本发明对此不作限定,例如,在一些实施例中,该应用安装包也可以是iPhone程序IPA包等,这并不影响本发明技术方案的实施及其技术效果的实现,类似地实施方式也均应视为在本发明的保护范围之内。
事实上,无论是APK包还是IPA包,其实质上都是一个zip压缩包,在具体安装时,这些压缩包会被放入系统中预定的文件夹内,以便于获取对这些压缩包进行解压缩并安装对应的应用的权限。换而言之,对于第一应用的应用安装包来说,运行第一应用时所需执行的指令可以通过对其应用安装包的解析来获取,在获取的指令以及记录有这些指令的文件相比于运行第一应用时实际执行的指令以及应用安装包中实际压缩的文件的还原度较高时,通过对解析应用安装包所获取的上述一个或多个文件的匹配分析便可以判断出第一应用是否存在安全漏洞。
也即,根据本发明实施例提供的检测装置,后台服务器可以通过第二获取单元404从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件,并通过第一判断单元406判断该一个或多个文件中是否存在包含第一匹配信息的匹配文件,进而通过输出单元408,在判断出存在匹配文件时,检测出第一应用存在安全漏洞。
具体地,在本发明实施例中,可以采用多种具体的匹配逻辑来判断该一个或多个文件中是否存在该匹配文件,以达到不同等级的检测效果并输出侧重点不同的输出结果。例如可选地,在一个实施例中,上述第一判断单元406可以包括:
1)判断模块,用于判断一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息;其中,
输出单元408可以包括:
1)第一输出模块,用于在若每一行记录中存在任意一行记录包含任意一个匹配信息时,检测出第一应用存在安全漏洞,并输出包含任意一个匹配信息的文件的文件名和/或任意一行的行号。
例如,在一个实施例中,安全漏洞检测所针对的安全漏洞可以包括随机数漏洞,也即随机数生成指令可能导致生成的随机数的随机性较差且易于破解的缺陷,对应地,第一匹配信息可以用于指示伪随机数生成指令,比如,该第一匹配信息可以包括字符串“SecureRandom.setSeed”或者字符串“SecureRandom”。具体地,在Java语言中,SecureRandom用于提供随机数加密功能,或者说使用该指令可以基于给定的随机数生成加密后的随机性更强的随机数,然而在不确定该指令所采用的给定的随机数也即随机数的“种子”的随机性优劣的前提下,执行该指令所生成的随机数的分布距离真正的随机分布仍可能有较大差距,换而言之,容易产生随机数漏洞,进而导致安全风险。
在这一前提下,则可以将执行时存在安全漏洞的指令的代码,比如SecureRandom.setSeed和/或SecureRandom作为第一匹配信息。值得注意的是,在上述场景下,若采用字符串“SecureRandom”作为第一匹配信息,则通过这一第一匹配信息也可以匹配到记录有指令SecureRandom.setSeed的匹配文件。在这一情形下,字符串“SecureRandom”也可以视为是指令SecureRandom.setSeed的特征信息,换而言之,在本发明实施例中,第一匹配信息并不仅限于是指令本身。
进一步地,则可以通过步骤S2判断从应用安装包中获取的一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息。例如,若利用用于对APK包中压缩的classes.dex进行反编译的工具软件baksmali.jar从第一应用的应用安装包中解析出以下文件:Main$1.smali、Main$2.smali和Main$3.smali,其中,“Main$1.smali”、“Main$2.smali”和“Main$3.smali”均表示文件名,并且文件Main$3.smali中的第88行记录的代码包含第一匹配信息,如字符串“SecureRandom”,则可以检测出第一应用存在安全漏洞,并通过步骤S4输出包含该第一匹配信息的文件的文件名“Main$3.smali”以及存在安全漏洞的指令所在的行的行号“88”。
进一步可选地,在本发明实施例中,上述输出单元406还可以包括:
1)查找模块,用于在该每一行记录中存在该任意一行记录包含该任意一个匹配信息时,查找与该任意一个匹配信息对应的缺陷描述信息,其中,缺陷描述信息用于描述在执行由任意一个匹配信息指示的指令时所存在的安全漏洞;其中,
第一输出模块可以包括:
1)输出子模块,用于将查找到的缺陷描述信息标记为与文件名和/或行号对应,并输出文件名和/或行号以及对应的缺陷描述信息。
在本发明实施例中,维护在后台服务器的本地或外部的第一匹配信息可以对应有用于描述该匹配信息所指示的存在安全漏洞的指令的缺陷描述信息。例如对于述实施例,第一匹配信息可以是字符串“SecureRandom”,其对应的缺陷描述信息可以是“存在随机数漏洞”。在上述场景下,若检测出存在与字符串“SecureRandom”匹配的匹配文件Main$3.smali,则可以输出文件名“Main$3.smali”、缺陷行号“88”和缺陷匹配信息“存在随机数漏洞”,以便于运维管理人员的读取和/或后续处理操作。
在以上描述的基础上,作为进一步可选的方式,在本发明实施例中,与输出单元408耦合地,上述检测装置还可以包括:
1)第二判断单元,用于在存在匹配文件时,判断匹配文件是否包含第二匹配信息,其中,第二匹配信息用于指示在运行第二应用时执行的修复安全漏洞的指令;其中,
输出单元408可以包括:
1)第二输出模块,用于在匹配文件未包含第二匹配信息时,检测出第一应用存在安全漏洞。
在本发明实施例中,基于第一匹配信息进行匹配分析以判断第一应用是否存在安全漏洞的方式可能会出现过度判断的情况。例如,对于作为第一匹配信息的字符串“SecureRandom”来说,若将其所指示的随机数生成指令SecureRandom与unix系统提供的加强随机数生成方法如/dev/random或/dev/urandom相结合,比如在SecureRandom方法中采用/dev/urandom方法来生成随机数“种子”,则由于上述加强随机数生成算法的随机性较好,则在安全漏洞的检测过程中,也可以不对记录有加强随机数生成指令的文件进行响应,也即,若第一应用的应用安装包中解析出的文件中既包含字符串“SecureRandom”又包含字符串“/dev/random”,而且不存在仅包含字符串“SecureRandom”且未包含字符串“/dev/random”的文件,则可以检测出第一应用不存在安全漏洞。在另一方面,若存在包含字符串“SecureRandom”的匹配文件,且该匹配文件未包含字符串“/dev/random”或“/dev/urandom”,则可以检测出第一应用存在安全漏洞。由此可见,在本发明实施例中,上述修复安全漏洞的指令可以包括加强随机数生成指令,第二匹配信息可以包括字符串“dev/urandom”或者“/dev/random”。
除此之外,在本发明实施例中,第二获取单元404中所描述的从应用安装包中获取上述一个或多个文件的具体方式可以有多种,一般地,作为一种可选的方式,在本发明实施例中,上述第二获取单元404可以包括:
1)解压缩模块,用于从应用安装包中解压缩出类文件集;
2)获取模块,用于对类文件集进行反编译并获取一个或多个编译文件;
3)第三输出模块,用于将一个或多个编译文件作为一个或多个文件,和/或,在一个或多个编译文件中获取一个或多个文件。
例如,在一个实施例中,应用安装包可以是安卓安装包APK包,从中解压缩得到的类文件集可以包括多个类文件,或者说class类型文件。更具体地,对于解压缩操作和类文件集的获取来说,作为一种可行的方式,在本发明实施例中,上述解压缩模块可以包括:
1)第一解压缩子模块,用于从APK包中解压缩出classes.dex文件;
2)转换子模块,用于将classes.dex文件转换为jar类型文件,其中,jar类型文件表示Java归档文件;
3)第二解压缩子模块,用于从转换出的jar类型文件中解压缩出一个或多个类文件并形成类文件集。
通过上述实施例,对本发明技术方案进行了描述,然而应当理解的是,上述实施例仅用于对本发明技术方案的理解,并不会对本发明构成限定。例如,上述实施例中具体以安卓系统下的APK包为例对根据本发明实施例提供的安全漏洞检测装置的各模块进行了具体描述,然而这并非是本发明唯一的实施方式,其还可以利用相似的处理模块实施于IOS系统下的IPA包或其他现行或未来的可行的应用安装包,并基于对应用安装包的匹配分析来判断对应的第一应用是否存在安全漏洞,本发明对此不作限定。
实施例3
根据本发明实施例,还提供了一种用于存储如实施例1中所描述的获取方法的进程实体的存储介质,如图5所示,该存储介质被设置为存储用于执行以下步骤的程序代码:
S502:获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;
S504:从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件;
S506:判断一个或多个文件中是否存在包含第一匹配信息的匹配文件;
S508:若存在匹配文件,则检测出第一应用存在安全漏洞。
可选地,在本实施例中,上述存储介质可以位于如图2所示的后台服务器204上,具体地,该存储介质可以设置在一台网络设备上,也可以分功能地设置在多台网络设备上。
可选地,在本实施例中,处理器可以根据存储介质中存储的用于执行步骤S506的代码执行以下操作:S22、判断一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息;其中,
处理器还可以根据存储介质中存储的用于执行步骤S508的代码执行以下操作:S24、若每一行记录中存在任意一行记录包含任意一个匹配信息,则检测出第一应用存在安全漏洞,并输出包含任意一个匹配信息的文件的文件名和/或任意一行的行号。
可选地,在本实施例中,处理器可以根据存储介质中存储的用于执行步骤S508的代码执行以下操作:S26、若该每一行记录中存在该任意一行记录包含该任意一个匹配信息,则查找与该任意一个匹配信息对应的缺陷描述信息,其中,缺陷描述信息用于描述在执行由任意一个匹配信息指示的指令时所存在的安全漏洞;其中,
处理器还可以根据存储介质中存储的用于执行步骤S24的代码执行以下操作:S28、将查找到的缺陷描述信息标记为与文件名和/或行号对应,并输出文件名和/或行号以及对应的缺陷描述信息。
可选地,在本实施例中,存储介质还被设置为存储用于执行以下步骤的程序代码:S30、若存在匹配文件,则判断匹配文件是否包含第二匹配信息,其中,第二匹配信息用于指示在运行第二应用时执行的修复安全漏洞的指令;其中,
处理器还可以根据存储介质中存储的用于执行步骤S508的代码执行以下操作:S32、若匹配文件未包含第二匹配信息,则检测出第一应用存在安全漏洞。
可选地,在本实施例中,处理器还可以根据存储介质中存储的用于执行步骤S504的代码执行以下操作:S34、从应用安装包中解压缩出类文件集;S36、对类文件集进行反编译并获取一个或多个编译文件;S38、将一个或多个编译文件作为一个或多个文件,和/或,在一个或多个编译文件中获取一个或多个文件。
可选地,在本实施例中,处理器还可以根据存储介质中存储的用于执行步骤S34的代码执行以下操作:S40、从APK包中解压缩出classes.dex文件;S42、将classes.dex文件转换为jar类型文件,其中,jar类型文件表示Java归档文件;S44、从转换出的jar类型文件中解压缩出一个或多个类文件并形成类文件集。
可选地,在本实施例中,上述安全漏洞可以包括随机数漏洞;和/或,上述存在安全漏洞的指令可以包括伪随机数生成指令;和/或,上述修复上述安全漏洞的指令可以包括加强随机数生成指令;和/或,上述第一匹配信息包括字符串“SecureRandom.setSeed”和/或字符串“SecureRandom”;和/或,上述第二匹配信息包括字符串“/dev/urandom”和/或字符串“/dev/random”。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述实施例中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在上述计算机可读取的存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在存储介质中,包括若干指令用以使得一台或多台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。
实施例4
根据本发明实施例,还提供了一种用于实施如实施例1中所描述的获取方法的服务器,如图6所示,该服务器包括:
1)处理器602,用于获取第一应用的应用安装包和第一匹配信息,其中,应用安装包用于安装第一应用,第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;其中,
所述处理器还用于从应用安装包中获取记录有运行第一应用时所需执行的指令的一个或多个文件;其中,
所述处理器还用于判断一个或多个文件中是否存在包含第一匹配信息的匹配文件;其中,
所述处理器还用于在判断出存在匹配文件时,检测出第一应用存在安全漏洞。
可选地,在本实施例中,根据本发明实施例提供的服务器可以是如图2所示的后台服务器204。具体地,后台服务器204可以用于提供数据安全相关的各类服务,具体地,可以用于提供应用安全漏洞的检测服务。更具体地,在本发明实施例中,上述后台服务器204可以表示用于提供对应服务的服务器应用,也可以表示安装并运行有这些服务器应用的计算机或计算机系统,本发明对此不作限定。
可选地,在本实施例中,上述处理器602可以被设置为执行以下操作:S46、判断一个或多个文件中的每个文件中的每一行记录是否包括一个或多个第一匹配信息中的任意一个匹配信息;其中,
处理器还可以被设置为执行以下操作:S48、若每一行记录中存在任意一行记录包含任意一个匹配信息,则检测出第一应用存在安全漏洞,并输出包含任意一个匹配信息的文件的文件名和/或任意一行的行号。
可选地,在本实施例中,上述处理器602可以被设置为执行以下操作:S50、若该每一行记录中存在该任意一行记录包含该任意一个匹配信息,则查找与该任意一个匹配信息对应的缺陷描述信息,其中,缺陷描述信息用于描述在执行由任意一个匹配信息指示的指令时所存在的安全漏洞;其中,
处理器还可以被设置为执行以下操作:S52、将查找到的缺陷描述信息标记为与文件名和/或行号对应,并输出文件名和/或行号以及对应的缺陷描述信息。
可选地,在本实施例中,上述处理器602可以被设置为执行以下操作:S54、若存在匹配文件,则判断匹配文件是否包含第二匹配信息,其中,第二匹配信息用于指示在运行第二应用时执行的修复安全漏洞的指令;其中,
处理器还可以被设置为执行以下操作:S56、若匹配文件未包含第二匹配信息,则检测出第一应用存在安全漏洞。
可选地,在本实施例中,上述处理器602可以被设置为执行以下操作:S58、从应用安装包中解压缩出类文件集;S60、对类文件集进行反编译并获取一个或多个编译文件;S62、将一个或多个编译文件作为一个或多个文件,和/或,在一个或多个编译文件中获取一个或多个文件。
可选地,在本实施例中,上述处理器602可以被设置为执行以下操作:S64、从APK包中解压缩出classes.dex文件;S66、将classes.dex文件转换为jar类型文件,其中,jar类型文件表示Java归档文件;S68、从转换出的jar类型文件中解压缩出一个或多个类文件并形成类文件集。
可选地,在本实施例中,上述安全漏洞可以包括随机数漏洞;和/或,上述存在安全漏洞的指令可以包括伪随机数生成指令;和/或,上述修复上述安全漏洞的指令可以包括加强随机数生成指令;和/或,上述第一匹配信息包括字符串“SecureRandom.setSeed”和/或字符串“SecureRandom”;和/或,上述第二匹配信息包括字符串“/dev/urandom”和/或字符串“/dev/random”。
可选地,本实施例中的具体示例可以参考上述实施例1和实施例2中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的服务器和客户端,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,RandomAccessMemory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (12)
1.一种安全漏洞检测方法,其特征在于,包括:
获取第一应用的应用安装包和第一匹配信息,其中,所述应用安装包用于安装所述第一应用,所述第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;
从所述应用安装包中获取记录有运行所述第一应用时所需执行的指令的一个或多个文件;
判断所述一个或多个文件中是否存在包含所述第一匹配信息的匹配文件;
若存在所述匹配文件,则检测出所述第一应用存在安全漏洞。
2.根据权利要求1所述的方法,其特征在于,
所述判断所述一个或多个文件中是否存在包含所述第一匹配信息的匹配文件包括:判断所述一个或多个文件中的每个文件中的每一行记录是否包括一个或多个所述第一匹配信息中的任意一个匹配信息;
所述检测出所述第一应用存在安全漏洞包括:若所述每一行记录中存在任意一行记录包含所述任意一个匹配信息,则检测出所述第一应用存在安全漏洞,并输出包含所述任意一个匹配信息的文件的文件名和/或所述任意一行的行号。
3.根据权利要求2所述的方法,其特征在于,
所述检测出所述第一应用存在安全漏洞还包括:若所述每一行记录中存在任意一行记录包含所述任意一个匹配信息,则查找与所述任意一个匹配信息对应的缺陷描述信息,其中,所述缺陷描述信息用于描述在执行由所述任意一个匹配信息指示的指令时所存在的安全漏洞;
所述输出包含所述任意一个匹配信息的文件的文件名和/或所述任意一行的行号包括:将查找到的所述缺陷描述信息标记为与所述文件名和/或所述行号对应,并输出所述文件名和/或所述行号以及对应的所述缺陷描述信息。
4.根据权利要求1所述的方法,其特征在于,
在所述检测出所述第一应用存在安全漏洞之前,所述方法还包括:若存在所述匹配文件,则判断所述匹配文件是否包含第二匹配信息,其中,所述第二匹配信息用于指示在运行所述第二应用时执行的修复所述安全漏洞的指令;
所述检测出所述应用安装包存在安全漏洞包括:若所述匹配文件未包含所述第二匹配信息,则检测出所述第一应用存在安全漏洞。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述从所述应用安装包中获取记录有运行所述第二应用时所需执行的指令的一个或多个文件包括:
从所述应用安装包中解压缩出类文件集;
对所述类文件集进行反编译并获取一个或多个编译文件;
将所述一个或多个编译文件作为所述一个或多个文件,和/或,在所述一个或多个编译文件中获取所述一个或多个文件。
6.根据权利要求1至4中任一项所述的方法,其特征在于,
所述安全漏洞包括随机数漏洞;和/或,
所述存在安全漏洞的指令包括伪随机数生成指令;和/或,
所述修复所述安全漏洞的指令包括加强随机数生成指令;和/或,
所述第一匹配信息包括字符串SecureRandom.setSeed和/或字符串SecureRandom;和/或,
所述第二匹配信息包括字符串/dev/urandom和/或字符串/dev/random。
7.一种安全漏洞检测装置,其特征在于,包括:
第一获取单元,用于获取第一应用的应用安装包和第一匹配信息,其中,所述应用安装包用于安装所述第一应用,所述第一匹配信息用于指示在运行第二应用时所执行的存在安全漏洞的指令;
第二获取单元,用于从所述应用安装包中获取记录有运行所述第一应用时所需执行的指令的一个或多个文件;
第一判断单元,用于判断所述一个或多个文件中是否存在包含所述第一匹配信息的匹配文件;
输出单元,用于在存在所述匹配文件时,检测出所述第一应用存在安全漏洞。
8.根据权利要求7所述的装置,其特征在于,
所述第一判断单元包括:判断模块,用于判断所述一个或多个文件中的每个文件中的每一行记录是否包括一个或多个所述第一匹配信息中的任意一个匹配信息;
所述输出单元包括:第一输出模块,用于在所述每一行记录中存在任意一行记录包含所述任意一个匹配信息时,检测出所述第一应用存在安全漏洞,并输出包含所述任意一个匹配信息的文件的文件名和/或所述任意一行的行号。
9.根据权利要求8所述的装置,其特征在于,
所述输出单元还包括:查找模块,用于在所述每一行记录中存在任意一行记录包含所述任意一个匹配信息时,查找与所述任意一个匹配信息对应的缺陷描述信息,其中,所述缺陷描述信息用于描述在执行由所述任意一个匹配信息指示的指令时所存在的安全漏洞;
所述第一输出模块包括:输出子模块,用于将查找到的所述缺陷描述信息标记为与所述文件名和/或所述行号对应,并输出所述文件名和/或所述行号以及对应的所述缺陷描述信息。
10.根据权利要求9所述的装置,其特征在于,
所述装置还包括:第二判断单元,用于在存在所述匹配文件时,判断所述匹配文件是否包含第二匹配信息,其中,所述第二匹配信息用于指示在运行所述第二应用时执行的修复所述安全漏洞的指令;
所述输出单元包括:第二输出模块,用于在所述匹配文件未包含所述第二匹配信息时,检测出所述第一应用存在安全漏洞。
11.根据权利要求7至10中任一项所述的装置,其特征在于,所述第二获取单元包括:
解压缩模块,用于从所述应用安装包中解压缩出类文件集;
获取模块,用于对所述类文件集进行反编译并获取一个或多个编译文件;
第三输出模块,用于将所述一个或多个编译文件作为所述一个或多个文件,和/或,在所述一个或多个编译文件中获取所述一个或多个文件。
12.根据权利要求7至10中任一项所述的装置,其特征在于,
所述安全漏洞包括随机数漏洞;和/或,
所述存在安全漏洞的指令包括伪随机数生成指令;和/或,
所述修复所述安全漏洞的指令包括加强随机数生成指令;和/或,
所述第一匹配信息包括字符串SecureRandom.setSeed和/或字符串SecureRandom;和/或,
所述第二匹配信息包括字符串/dev/urandom和/或字符串/dev/random。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290871.1A CN105279078A (zh) | 2014-06-24 | 2014-06-24 | 安全漏洞检测方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410290871.1A CN105279078A (zh) | 2014-06-24 | 2014-06-24 | 安全漏洞检测方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN105279078A true CN105279078A (zh) | 2016-01-27 |
Family
ID=55148124
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410290871.1A Pending CN105279078A (zh) | 2014-06-24 | 2014-06-24 | 安全漏洞检测方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105279078A (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107145784A (zh) * | 2017-05-04 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描的方法、装置及计算机可读介质 |
CN107341403A (zh) * | 2017-07-24 | 2017-11-10 | 北京理工大学 | 一种文件转换方法和装置 |
CN108134768A (zh) * | 2016-12-01 | 2018-06-08 | 财团法人资讯工业策进会 | 数据保护方法与数据保护系统 |
CN108629182A (zh) * | 2017-03-21 | 2018-10-09 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及漏洞检测装置 |
CN108804270A (zh) * | 2018-06-12 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种硬盘储存数据处理测试方法 |
CN112131340A (zh) * | 2019-06-25 | 2020-12-25 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955914A (zh) * | 2011-08-19 | 2013-03-06 | 百度在线网络技术(北京)有限公司 | 一种源文件安全漏洞的检测方法及检测装置 |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
US20140059690A1 (en) * | 2012-02-16 | 2014-02-27 | Nec Laboratories America, Inc. | Method for Scalable Analysis of Android Applications for Security Vulnerability |
CN103870752A (zh) * | 2012-12-18 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种用于检测Flash XSS漏洞的方法、装置与设备 |
-
2014
- 2014-06-24 CN CN201410290871.1A patent/CN105279078A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102955914A (zh) * | 2011-08-19 | 2013-03-06 | 百度在线网络技术(北京)有限公司 | 一种源文件安全漏洞的检测方法及检测装置 |
US20140059690A1 (en) * | 2012-02-16 | 2014-02-27 | Nec Laboratories America, Inc. | Method for Scalable Analysis of Android Applications for Security Vulnerability |
CN103870752A (zh) * | 2012-12-18 | 2014-06-18 | 百度在线网络技术(北京)有限公司 | 一种用于检测Flash XSS漏洞的方法、装置与设备 |
CN103473509A (zh) * | 2013-09-30 | 2013-12-25 | 清华大学 | Android平台恶意软件自动检测方法 |
Non-Patent Citations (2)
Title |
---|
周振柳: "《计算机固件安全技术》", 31 December 2012, 北京:清华大学出版社 * |
申慧君: "基于日志的Android平台恶意软件检测方案的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108134768A (zh) * | 2016-12-01 | 2018-06-08 | 财团法人资讯工业策进会 | 数据保护方法与数据保护系统 |
CN108629182A (zh) * | 2017-03-21 | 2018-10-09 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及漏洞检测装置 |
CN108629182B (zh) * | 2017-03-21 | 2022-11-04 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及漏洞检测装置 |
CN107145784A (zh) * | 2017-05-04 | 2017-09-08 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描的方法、装置及计算机可读介质 |
CN107145784B (zh) * | 2017-05-04 | 2023-04-04 | 腾讯科技(深圳)有限公司 | 一种漏洞扫描的方法、装置及计算机可读介质 |
CN107341403A (zh) * | 2017-07-24 | 2017-11-10 | 北京理工大学 | 一种文件转换方法和装置 |
CN107341403B (zh) * | 2017-07-24 | 2020-11-27 | 北京理工大学 | 一种文件转换方法和装置 |
CN108804270A (zh) * | 2018-06-12 | 2018-11-13 | 郑州云海信息技术有限公司 | 一种硬盘储存数据处理测试方法 |
CN108804270B (zh) * | 2018-06-12 | 2021-09-28 | 郑州云海信息技术有限公司 | 一种硬盘储存数据处理测试方法 |
CN112131340A (zh) * | 2019-06-25 | 2020-12-25 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
CN112131340B (zh) * | 2019-06-25 | 2024-02-20 | 杭州萤石软件有限公司 | 字符串检测方法、装置及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Spreitzenbarth et al. | Mobile-Sandbox: combining static and dynamic analysis with machine-learning techniques | |
CN105279078A (zh) | 安全漏洞检测方法和装置 | |
US8479291B1 (en) | Systems and methods for identifying polymorphic malware | |
JP7131946B2 (ja) | アプリケーションの保安性を評価する方法およびシステム | |
Ding et al. | DeepPower: Non-intrusive and deep learning-based detection of IoT malware using power side channels | |
CN104462968B (zh) | 恶意应用程序的扫描方法、装置和系统 | |
Liu et al. | On manually reverse engineering communication protocols of linux-based iot systems | |
TWI541669B (zh) | Detection systems and methods for static detection applications, and computer program products | |
CN111163095B (zh) | 网络攻击分析方法、网络攻击分析装置、计算设备和介质 | |
CN107273723B (zh) | 一种基于so文件加壳的Android平台应用软件保护方法 | |
KR101695639B1 (ko) | 클라우드 기반의 애플리케이션 보안 서비스 제공 방법 및 시스템 | |
CN105095207A (zh) | 检索、获取应用软件内容的方法和装置 | |
CN104424423A (zh) | 应用程序的权限确定方法和装置 | |
CN114386032A (zh) | 电力物联网设备的固件检测系统及方法 | |
CN109241707A (zh) | 应用程序的混淆方法、装置和服务器 | |
CN107231364B (zh) | 一种网站漏洞检测方法及装置、计算机装置及存储介质 | |
CN110287700B (zh) | 一种iOS应用安全分析方法及装置 | |
CN109543409B (zh) | 用于检测恶意应用及训练检测模型的方法、装置及设备 | |
CN115062309A (zh) | 一种新型电力系统下基于设备固件仿真的漏洞挖掘方法及存储介质 | |
KR101557455B1 (ko) | 응용 프로그램 코드 분석 장치 및 그것을 이용한 코드 분석 방법 | |
CN104915594A (zh) | 应用程序运行方法及装置 | |
Maynard et al. | Modelling Duqu 2.0 Malware using Attack Trees with Sequential Conjunction. | |
CN113961936A (zh) | 可信白名单建设方法、系统、装置和计算机设备 | |
CN107145342B (zh) | 应用的渠道信息的处理方法和装置 | |
JP2012083909A (ja) | アプリケーション特性解析装置およびプログラム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20160127 |