CN107657177B - 一种漏洞检测方法及装置 - Google Patents
一种漏洞检测方法及装置 Download PDFInfo
- Publication number
- CN107657177B CN107657177B CN201710938470.6A CN201710938470A CN107657177B CN 107657177 B CN107657177 B CN 107657177B CN 201710938470 A CN201710938470 A CN 201710938470A CN 107657177 B CN107657177 B CN 107657177B
- Authority
- CN
- China
- Prior art keywords
- function
- processing function
- application program
- security
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明实施例提供一种漏洞检测方法及装置,所述方法包括:获得请求;响应所述请求,运行所述请求对应的应用程序;通过污点跟踪技术,获取所述应用程序运行时所产生的执行信息;基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测。如此,通过应用程序的执行信息来进行安全分析,能够同时提高检测漏洞的速度和检测精度。
Description
技术领域
本发明涉及计算机安全领域,尤其涉及一种漏洞检测方法及装置。
背景技术
随着信息化的发展以及计算机技术和互联网技术的普及,各种功能的应用程序大量涌现,通过这些应用程序,人们可以享受到网络带来的便利。但是,这些应用程序往往会存在一些安全漏洞,如果这些安全漏洞被人恶意利用,可能就会出现数据丢失或篡改、用户隐私泄露等安全隐患,从而,容易导致用户的人身安全得不到保证,或者给用户带来经济损失。为了防止漏洞被恶意利用导致安全隐患,通常需要不定期的检测应用程序的安全漏洞,以便开发人员及时修复。
目前,现有安全测试方式主要分为黑盒测试和白盒测试两类。其中,黑盒测试是将应用程序看成一个黑盒子,通过爬虫或人工收集的方式获取请求,然后在正常请求上增加或替换为payload,根据响应来判断漏洞是否存在;白盒测试是通过人工或工具对应用程序的源代码进行代码审计,来挖掘应用程序的漏洞。
在通过现有安全测试方法对应用程序进行安全测试的过程中,发明人发现现有技术中至少存在如下问题:黑盒测试非常依赖payload和收集的请求连接,测试精度较低,容易出现漏报的情况,而且在使用工具扫描时会生大量异常请求,容易导致服务器挂掉;而在白盒测试中,人工方式成本过高且测试速度过慢,而工具方式对于脚本语言的动态特性支持较差且对于逻辑漏洞的检测非常欠缺误报非常高。
发明内容
有鉴于此,本发明实施例提供一种漏洞检测方法及装置,主要目的在于通过应用程序的执行信息来进行安全分析,能够同时提高检测漏洞的速度和的检测精度。
为达到上述目的,本发明实施例主要提供如下技术方案:
第一方面,本发明实施例提供一种漏洞检测方法,所述方法包括:获得请求;响应所述请求,运行所述请求对应的应用程序;通过污点跟踪技术,获取所述应用程序运行时所产生的执行信息;基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测。
第二方面,本发明实施例提供一种漏洞检测装置,所述装置包括:获得单元、响应单元、获取单元以及检测单元,其中,所述获得单元,用于获得请求;所述响应单元,用于响应所述请求,运行所述请求对应的应用程序;所述获取单元,用于通过污点跟踪技术,获取所述应用程序运行时所产生的执行信息;所述检测单元,用于基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测。
第三方面,本发明实施例提供一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述漏洞检测方法。
第四方面,本发明实施例提供一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述漏洞检测方法。
本发明实施例提供的一种漏洞检测方法及装置,在获得请求后,就会运行请求对应的应用程序,然后通过污点跟踪技术,获取应用程序运行时所产生的执行信息,最后,基于执行信息使用预设的安全分析模型来对应用程序进行漏洞检测。这样,由于是使用安全分析模型对应用程序运行时产生的执行信息做安全分析,来实现对应用程序的漏洞检测的,从而,能够同时提高检测漏洞的速度和精度。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例一中的漏洞检测方法的流程示意图;
图2示出了本发明实施例二中的漏洞检测装置的结构示意图;
图3示出了本发明实施例三中的漏洞检测设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本发明的示例性实施例。虽然附图中显示了本发明的示例性实施例,然而应当理解,可以以各种形式实现本发明而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本发明,并且能够将本发明的范围完整的传达给本领域的技术人员。
实施例一
本发明实施例提供一种漏洞检测方法,该漏洞检测方法可以应用于各种需要进行漏洞检测的场合,如恶意代码分析、漏洞挖掘、实时监控应用安全漏洞、监控网站后门、拦截恶意请求等。
图1为本发明实施例一中的漏洞检测方法的流程示意图,参见图1所示,该漏洞检测方法包括:
S101:获得请求;
这里,该请求用于运行应用程序。
在实际应用中,在开发阶段、QA、安全测试阶段等需要测试应用程序的安全漏洞的时候,可以通过人工或爬虫的方式产生该请求,以便自动对应用程序进行漏洞检测,来确定应用程序是否存在安全漏洞。
S102:响应请求,运行请求对应的应用程序;
在实际应用中,该请求中携带有输入参数,以便应用程序对该输入参数进行处理,执行该应用程序所要实现的功能,这样,根据该输入参数可以确定所要执行的应用程序,从而,就可以运行该请求对应的应用程序。
S103:通过污点跟踪技术,获取应用程序运行时所产生的执行信息;
具体地,为了更准、快速地确定出应用程序是否存在漏洞,可以通过污点跟踪技术来获取应用程序运行时所产生的执行信息。
在本发明其它实施例中,S103可以包括以下步骤:
步骤1031:在运行应用程序时,启动污染程序,获取请求中携带的输入参数;
在具体实施过程中,为了通过污点跟踪的方式,监控应用程序的运行情况,在运行该请求对应的应用程序的同时,还需要启动专门写的污染程序。
具体地,污染程序是指将应用程序中的目标处理函数执行Hook操作替换为自定义函数的程序。在污染程序中预先定义了需要Hook的处理函数列表,当启动污染程序后,应用程序的执行流程到这些处理函数处时,就会替换成执行污染程序的自定义函数。
在具体实施过程中,步骤1031可以包括:解析请求,获得请求对应的数据解析包;将数据解析包中满足预设条件的数据确定为输入参数。
在实际应用中,满足预设条件的数据可以为参数值输入源,如GPCS全局数组也可以为参数名输入源,如“Key”数据,当然,还可以为其它输入源,如“input://”、“extract”等数据。这里,本发明实施例不做具体限定。
这里,GPCS全局数组是指GET、POST、Cookie、server这些存储了从请求中解析获得的全部数据超级全局数组。
步骤1032:污染输入参数,获得带污点的输入参数;
这里,污染输入参数是指对输入参数做标记。
在具体实施过程中,在实际应用中,根据所确定的输入参数所属的输入源,污染输入参数一方面可以是指的是污染PHP的GPCS全局数组,另一方面可以是指污染“Key”、“input://”、“extract”等。
步骤1033:在应用程序的执行过程中,通过跟踪带污点的输入参数来获取执行信息。
在具体实施过程中,步骤1033可以包括:对应用程序执行流程中与带污点的输入参数对应的处理函数进行挂钩Hook,获取处理函数输出的输出参数;基于处理函数的函数类型、带污点的输入参数以及输出参数,对带污点的输入参数标记对应的安全状态信息。
具体地,为了实现传递污染,可以对应用程序执行流程中与带污点的输入参数对应的处理函数进行挂钩Hook,获取处理函数输出的输出参数,这时,污染就会从操作的输入传递到操作的输出。在Hook处理函数后,就会在在原有函数功能上增加污染传递和安全状态标记逻辑,为了便于后续准确确定是否进行告警,还需要分析处理函数的类型,以便确定是否需要标记安全状态信息。
在实际应用中,安全状态信息表明了应用程序运行时所产生的执行信息,如执行的流程、输入输出信息、所做的处理等,是能否准确告警的关键。
在具体实施过程中,为了明确应用程序运行时产生的执行信息,安全状态信息可以包括:(1)变量安全处理状态,即输入参数经过哪类安全函数过滤,是过滤SQL的,如Addslashes,还是过滤命令的,如escapeshellcmd等;(2)变量编码状态,如Urlencode、base64encode、serialize等;(3)污染来源信息,如GET、POST、Cookie、Server、Key等;(4)其它信息,如输入参数中包含的那些特殊符号。这里,本发明实施例不做具体限定。
具体地,处理函数的函数类型决定安全状态信息如何标记。下面详细介绍函数类型与标记安全状态信息。
在实际应用中,处理函数的函数类型分为不改变变量安全状态和改变变量安全状态两种。其中,不改变变量安全状态的处理函数如trim、strval等。改变变量安全状态的处理函数可以分为内置处理,如Addslashes、mysql_real_escape_string等,和自定义处理,如str_replace、substr、sprintf等。
由于不改变变量安全状态的处理函数在对输入参数进行处理后,虽然会使得输入参数发生变化,但是不会导致安全特性变化,污染也不会发生变化,所以不用标记安全状态信息。
示例性地,以trim函数为例,假设“aaaa”=trim(“aaaaa”),处理后,虽然字符串发生变化,但是不会导致安全特性变化。
由于改变变量安全状态的处理函数对输入参数的处理不固定,可能引入安全问题也可能避免安全问题,因此,改变变量安全状态的处理函数在对输入参数进行处理后,会导致安全特性变化,污染也不会发生变化,所以需要标记安全状态信息。
进一步地,根据改变变量安全状态的处理函数的类型的不同,对改变变量安全状态的处理函数标记安全状态信息的方法也是不同的。因此,上述基于处理函数的函数类型、带污点的输入参数以及输出参数,对带污点的输入参数标记对应的安全状态信息的步骤可以包括:当处理函数的函数类型为改变变量安全状态时,判断处理函数是内置处理函数,还是自定义处理函数;如果处理函数为内置处理函数,基于处理函数的函数功能,对带污点的输入参数标记对应的安全状态信息;如果处理函数为自定义处理函数,基于处理函数的处理逻辑、带污点的输入参数以及输出参数,对处理函数的功能进行分析;根据分析结果对带污点的输入参数标记对应的安全状态信息。
在实际应用中,由于内置处理函数为系统函数,当内置处理函数确定后,就可以从Hook程序中的处理函数列表中唯一确定出该内置处理函数的函数功能,因此,可以直接获取到该内置处理函数的函数功能,然后根据函数功能来标记对于的安全状态信息。而自定义处理函数为用户自行编写的程序,Hook程序不能直接获取该自定义处理函数的函数功能,因此,需要获取根据该自定义处理函数的函数逻辑以及输入输出具体情况具体分析出该自定义处理函数的函数功能,然后根据分析结果,即分析出的自定义处理函数的函数功能来标记相应的安全状态信息。
S104:基于执行信息,使用预设的安全分析模型来对应用程序进行漏洞检测。
具体地,在获得了应用程序执行时所产生的执行信息后,就可以使用预设的安全分析模型分析执行信息,来判断应用程序是否存在安全漏洞。
在具体实施过程中,S104可以包括:当应用程序的执行流程到达危险函数时,根据危险函数的函数类型,确定与危险函数对应的预设的安全分析模型;使用预设的安全分析模型对执行信息进行安全分析,如果分析结果表明出现安全漏洞,生成告警数据。
这里,危险函数是指应用程序执行流程的最后一个函数。当不可以控制的输入变量进入危险函数后,可能会产生安全漏洞。常见的危险函数为System、eval、mysql_query等。
在实际应用中,不同类型的危险函数对应不同类型的安全漏洞,比如system,eval对应命令执行漏洞,mysql_query函数对应sql注入漏洞,而不同的漏洞类型需要用不同类型的安全分析模型来判断是否存在安全漏洞。因此,当应用程序的执行流程到达危险函数处时,为了判断是否出现安全漏洞,首先需要根据危险函数的函数类型确定出该危险函数对应的预设安全分析模型,然后在确定了预设安全分析模型后,就可以对所获得的应用程序运行时执行信息进行分析,如果分析结果表明出现了安全漏洞,就需要生成对应的告警数据。
示例性地,假设应用程序中包含3个处理函数A、B、C,根据最后危险函数的类型可以建模出处理过程是先执行A、再执行B、最后执行C,那么,该危险函数对应的预设安全分析模型至少包括该处理过程。这样,若根据执行信息所确定出的处理流程为先执行A、再执行C、未执行B,则执行信息与预设的安全分析模型是不匹配的,此时,就可以基于执行信息生成告警数据。
具体地,告警数据可以包括:告警时间、告警级别、漏洞类型、存在漏洞参数、程序执行调用栈、请求连接、业务名称、状态位、SERVER数据以及告警分析处理建议等信息,以便通过告警数据警示用户或开发人员所存在的安全漏洞的信息,或者,漏洞自动确认和修复。
示例性地,将告警数据发送给开发人员后,通过漏洞请求连接、存在漏洞的参数、程序执行调用栈,和漏洞修复建议,开发人员可以快速定位并修复安全漏洞。
在本发明其它实施例中,为确认告警数据是否真实有效,并确定根据安全分析模型所得到的安全漏洞是否真实存在,在生成告警数据之后,方法还包括:基于告警数据,通过告警自动处理脚本自动确认存在安全漏洞。
当采用复现安全漏洞的方式来确认安全漏洞时,上述基于告警数据,通过告警自动处理脚本自动确认存在安全漏洞的步骤包括:通过告警自动处理脚本解析告警数据,还原触发安全漏洞的数据包;基于数据包,复现安全漏洞;如果成功完成安全漏洞的复现,确认告警有效,并确定安全漏洞存在。
具体地,漏洞确认自动化是通过告警自动确认脚本实现的。在获得告警数据后,自动确认脚本会解析告警数据,还原触发安全漏洞的数据包,然后,根据所获得的数据包,通过黑盒方法尝试复现漏洞,以便判断告警是否真实有效。这里,如果成功复现出安全漏洞,表明告警数据是真实有效的,此时,可以确定安全漏洞是真实存在的,完成了安全漏洞的自动确认。
此外,在实际应用中,由于一些原因,如出现请求唯一性、请求一次性有效等情况,即使该安全漏洞是真实存在的,也是无法复现出来的,此时,就无法通过复现漏洞的方式来确认安全漏洞。因此,如果不能成功复现出安全漏洞,表明此安全漏洞为无法自动确认的,此时,告警数据可能是真实有效的,也可能是无效的。那么,对于这些无法自动确认的安全漏洞,就需要通过人工的方式来判断是否该安全漏洞是否真实存在。
可见,通过告警自动确认脚本实现了漏洞确认自动化,能够提高漏洞确认及时性以及节省安全人员确认漏洞的时间。
至此,便完成了对应用程序进行漏洞检测的过程。
由上述内容可知,本发明实施例所提供的漏洞检测方法,在获得请求后,就会运行请求对应的应用程序,然后通过污点跟踪技术,获取应用程序运行时所产生的执行信息,最后,基于执行信息,使用预设的安全分析模型来对应用程序进行漏洞检测。这样,由于是使用安全分析模型对应用程序运行时产生的执行信息做安全分析,来实现对应用程序的漏洞检测的,从而,能够同时提高检测漏洞的速度和精度。
实施例二
基于同一发明构思,作为对上述方法的实现,本发明实施例提供了一种漏洞检测装置,该装置实施例与前述方法实施例对应,为便于阅读,本装置实施例不再对前述方法实施例中的细节内容进行逐一赘述,但应当明确,本实施例中的装置能够对应实现前述方法实施例中的全部内容。
图2为本发明实施例二中的漏洞检测装置的结构示意图,参见图2所示,该漏洞检测装置20包括:获得单元201、响应单元202、获取单元203以及检测单元204,其中,获得单元201,用于获得请求;响应单元202,用于响应请求,运行请求对应的应用程序;获取单元203,用于通过污点跟踪技术,获取应用程序运行时所产生的执行信息;检测单元204,用于基于执行信息,使用预设的安全分析模型来对应用程序进行漏洞检测。
在本发明实施例中,获取单元,用于在运行应用程序时,启动污染程序,获取请求中携带的输入参数;污染输入参数,获得带污点的输入参数;在应用程序的执行过程中,通过跟踪带污点的输入参数来获取执行信息。
在本发明实施例中,获取单元,用于对应用程序执行流程中与带污点的输入参数对应的处理函数进行挂钩Hook,获取处理函数输出的输出参数;基于处理函数的函数类型、带污点的输入参数以及输出参数,对带污点的输入参数标记对应的安全状态信息。
在本发明实施例中,获取单元,用于当处理函数的函数类型为改变变量安全状态时,判断处理函数为内置处理函数或者自定义处理函数;如果处理函数为内置处理函数,基于处理函数的函数功能,对带污点的输入参数标记对应的安全状态信息;如果处理函数为自定义处理函数,基于处理函数的处理逻辑、带污点的输入参数以及输出参数,对处理函数的功能进行分析;根据分析结果对带污点的输入参数标记对应的安全状态信息。
在本发明实施例中,检测单元,用于当应用程序的执行流程到达危险函数时,根据危险函数的函数类型,确定与危险函数对应的预设的安全分析模型;使用预设的安全分析模型对执行信息进行安全分析,如果分析结果表明出现安全漏洞,生成告警数据。
在本发明其它实施例中,该装置还包括:确认单元,用基于告警数据,通过告警自动处理脚本自动确认存在安全漏洞。
在本发明实施例中,确认单元,用于通过告警自动处理脚本解析告警数据,还原触发安全漏洞的数据包;基于数据包,复现安全漏洞;如果成功完成安全漏洞的复现,确认告警有效,并确定安全漏洞存在。
上述漏洞检测装置包括处理器和存储器,上述获得单元、响应单元、获取单元、检测单元、确认单元等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。
处理器中包含内核,由内核从存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来实现识别物料信息中的关键词,并基于关键词对物料信息进行分类。
上述处理器可由中央处理器(Central Processing Unit,CPU)、微处理器(MicroProcessor Unit,MPU)、数字信号处理器(Digital Signal Processor,DSP)、或现场可编程门阵列(Field Programmable Gate Array,FPGA)等实现。
存储器可能包括计算机可读介质中的非永久性存储器,随机存储器(RandomAccess Memory,RAM)和/或非易失性内存等形式,如只读存储器(Read Only Memory,ROM)或闪存(Flash RAM),存储器包括至少一个存储芯片。
基于同一发明构思,本发明实施例提供一种存储介质,其上存储有程序,该程序被处理器执行时实现上述漏洞检测方法。
基于同一发明构思,本发明实施例提供一种处理器,处理器用于运行程序,其中,程序运行时执行上述漏洞检测方法。
在实际应用中,该漏洞检测装置可应用于终端中。终端可以以各种形式来实施。例如,本发明中描述的终端可以包括诸如手机、平板电脑、笔记本电脑、掌上电脑、个人数字助理(Personal Digital Assistant,PDA)、便捷式媒体播放器(Portable Media Player,PMP)、导航装置、可穿戴设备、智能手环、计步器等移动终端,以及诸如数字TV、台式计算机、服务器等固定终端。
实施例三
基于同一发明构思,本发明实施例提供一种漏洞检测设备。图3为本发明实施例三中的漏洞检测设备的结构示意图,参见图3所示,该漏洞检测设备30包括:存储器301、处理器302以及存储在存储器301上并可在处理器302上运行的计算机程序303,处理器执行程序303时实现以下步骤:获得请求;响应请求,运行请求对应的应用程序,并启动污染程序;通过污点跟踪技术,获取应用程序运行时所产生的执行信息;基于执行信息,使用预设的安全分析模型来对应用程序进行漏洞检测。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:获取请求中携带的输入参数;污染输入参数;在应用程序的执行过程中,通过跟踪带污点的输入参数来获取执行信息。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:对应用程序执行流程中与带污点的输入参数对应的处理函数进行挂钩Hook,获取处理函数输出的输出参数;基于处理函数的函数类型、带污点的输入参数以及输出参数,对带污点的输入参数标记对应的安全状态信息。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:当处理函数的函数类型为改变变量安全状态时,判断处理函数是内置处理函数,还是自定义处理函数;如果处理函数为内置处理函数,基于处理函数的函数功能,对带污点的输入参数标记对应的安全状态信息;如果处理函数为自定义处理函数,基于处理函数的处理逻辑、带污点的输入参数以及输出参数,对处理函数的功能进行分析;根据分析结果对带污点的输入参数标记对应的安全状态信息。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:解析请求,获得请求对应的数据解析包;将数据解析包中满足预设条件的数据确定为输入参数。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:当应用程序的执行流程到达危险函数时,根据危险函数的函数类型,确定与危险函数对应的预设的安全分析模型;使用预设的安全分析模型对执行信息进行安全分析,如果分析结果表明出现安全漏洞,生成告警数据。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:基于告警数据,通过告警自动处理脚本自动确认存在安全漏洞。
在本发明实施例中,上述处理器执行程序时还可实现以下步骤:通过告警自动处理脚本解析告警数据,还原触发安全漏洞的数据包;基于数据包,复现安全漏洞;如果成功完成安全漏洞的复现,确认告警有效,并确定安全漏洞存在。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
存储器可能包括计算机可读介质中的非永久性存储器,RAM和/或非易失性内存等形式,如ROM或Flash RAM。存储器是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机可读存储介质可以是ROM、可编程只读存储器(Programmable Read-Only Memory,PROM)、可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,EPROM)、电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,EEPROM)、磁性随机存取存储器(Ferromagnetic Random Access Memory,FRAM)、快闪存储器(Flash Memory)、磁表面存储器、光盘、或只读光盘(Compact Disc Read-Only Memory,CD-ROM)等存储器;也可以是快闪记忆体或其他内存技术、CD-ROM、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息;还可以是包括上述存储器之一或任意组合的各种电子设备,如移动电话、计算机、平板设备、个人数字助理等。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (16)
1.一种漏洞检测方法,其特征在于,所述方法包括:
获得请求;响应所述请求,运行所述请求对应的应用程序;
通过污点跟踪技术,获取所述应用程序运行时所产生的执行信息;
基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测;
所述通过污点跟踪技术,获取应用程序运行时所产生的执行信息,包括:
在运行所述应用程序时,启动污染程序,获取所述请求中携带的输入参数;
污染所述输入参数,获得带污点的输入参数;
在所述应用程序的执行过程中,通过跟踪所述带污点的输入参数来获取所述执行信息;
所述在所述应用程序的执行过程中,通过跟踪所述带污点的输入参数,获取所述执行信息,包括:
对所述应用程序执行流程中与所述带污点的输入参数对应的处理函数进行挂钩Hook,获取所述处理函数输出的输出参数;
基于所述处理函数的函数类型、所述带污点的输入参数以及所述输出参数,对所述带污点的输入参数标记对应的安全状态信息。
2.根据权利要求1所述的方法,其特征在于,所述基于所述处理函数的函数类型、所述带污点的输入参数以及所述输出参数,对所述带污点的输入参数标记对应的安全状态信息,包括:
当所述处理函数的函数类型为改变变量安全状态时,判断所述处理函数为内置处理函数或者自定义处理函数;
如果所述处理函数为内置处理函数,基于所述处理函数的函数功能,对所述带污点的输入参数标记对应的安全状态信息;
如果所述处理函数为自定义处理函数,基于所述处理函数的处理逻辑、所述带污点的输入参数以及所述输出参数,对所述处理函数的功能进行分析;根据分析结果对所述带污点的输入参数标记对应的安全状态信息。
3.根据权利要求1所述的方法,其特征在于,所述获取所述请求中携带的输入参数,包括:
解析所述请求,获得所述请求对应的数据解析包;
将所述数据解析包中满足预设条件的数据确定为所述输入参数。
4.根据权利要求1所述的方法,其特征在于,所述基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测,包括:
当所述应用程序的执行流程到达危险函数时,根据所述危险函数的函数类型,确定与所述危险函数对应的所述预设的安全分析模型;
使用所述预设的安全分析模型对所述执行信息进行安全分析,如果分析结果表明出现安全漏洞,生成告警数据。
5.根据权利要求4所述的方法,其特征在于,在生成所述告警数据之后,所述方法还包括:
基于所述告警数据,通过告警自动处理脚本自动确认存在所述安全漏洞。
6.根据权利要求5所述的方法,其特征在于,所述基于所述告警数据,通过告警自动处理脚本自动确认存在所述安全漏洞,包括:
通过告警自动处理脚本解析所述告警数据,还原触发所述安全漏洞的数据包;
基于所述数据包,复现所述安全漏洞;
如果成功完成所述安全漏洞的复现,确认告警有效,并确定所述安全漏洞存在。
7.根据权利要求4所述的方法,其特征在于,所述使用所述预设的安全分析模型对所述执行信息进行安全分析,如果所述分析结果表明出现安全漏洞,生成告警数据,包括:
将所述执行信息与所述预设的安全分析模型进行匹配;
如果所述执行信息与所述预设的安全分析模型不匹配,基于所述执行信息生成所述告警数据。
8.一种漏洞检测装置,其特征在于,所述装置包括:获得单元、响应单元、获取单元以及检测单元,其中,
所述获得单元,用于获得请求;
所述响应单元,用于响应所述请求,运行所述请求对应的应用程序;
所述获取单元,用于通过污点跟踪技术,获取所述应用程序运行时所产生的执行信息;
所述检测单元,用于基于所述执行信息,使用预设的安全分析模型来对所述应用程序进行漏洞检测;
所述获取单元,用于在运行所述应用程序时,启动污染程序,获取所述请求中携带的输入参数;污染所述输入参数,获得带污点的输入参数;在所述应用程序的执行过程中,通过跟踪所述带污点的输入参数来获取所述执行信息;
所述获取单元,用于对所述应用程序执行流程中与所述带污点的输入参数对应的处理函数进行挂钩Hook,获取所述处理函数输出的输出参数;基于所述处理函数的函数类型、所述带污点的输入参数以及所述输出参数,对所述带污点的输入参数标记对应的安全状态信息。
9.根据权利要求8所述的装置,所述获取单元,用于当所述处理函数的函数类型为改变变量安全状态时,判断所述处理函数为内置处理函数或者自定义处理函数;如果所述处理函数为内置处理函数,基于所述处理函数的函数功能,对所述带污点的输入参数标记对应的安全状态信息;如果所述处理函数为自定义处理函数,基于所述处理函数的处理逻辑、所述带污点的输入参数以及所述输出参数,对所述处理函数的功能进行分析;根据分析结果对所述带污点的输入参数标记对应的安全状态信息。
10.根据权利要求8所述的装置,所述获取单元,用于解析所述请求,获得所述请求对应的数据解析包;将所述数据解析包中满足预设条件的数据确定为所述输入参数。
11.根据权利要求8所述的装置,所述检测单元,用于当所述应用程序的执行流程到达危险函数时,根据所述危险函数的函数类型,确定与所述危险函数对应的所述预设的安全分析模型;使用所述预设的安全分析模型对所述执行信息进行安全分析,如果分析结果表明出现安全漏洞,生成告警数据。
12.根据权利要求11所述的装置,所述装置还包括:确认单元,用于基于所述告警数据,通过告警自动处理脚本自动确认存在所述安全漏洞。
13.根据权利要求12所述的装置,所述确认单元,用于通过告警自动处理脚本解析所述告警数据,还原触发所述安全漏洞的数据包;基于所述数据包,复现所述安全漏洞;如果成功完成所述安全漏洞的复现,确认告警有效,并确定所述安全漏洞存在。
14.根据权利要求11所述的装置,所述检测单元,用于将所述执行信息与所述预设的安全分析模型进行匹配;如果所述执行信息与所述预设的安全分析模型不匹配,基于所述执行信息生成所述告警数据。
15.一种存储介质,其特征在于,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行如权利要求1至7任一项所述的漏洞检测方法。
16.一种处理器,其特征在于,所述处理器用于运行程序,其中,所述程序运行时执行如权利要求1至7任一项所述的漏洞检测方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710938470.6A CN107657177B (zh) | 2017-09-30 | 2017-09-30 | 一种漏洞检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710938470.6A CN107657177B (zh) | 2017-09-30 | 2017-09-30 | 一种漏洞检测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107657177A CN107657177A (zh) | 2018-02-02 |
CN107657177B true CN107657177B (zh) | 2020-11-06 |
Family
ID=61117781
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710938470.6A Active CN107657177B (zh) | 2017-09-30 | 2017-09-30 | 一种漏洞检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107657177B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108416216A (zh) * | 2018-02-28 | 2018-08-17 | 阿里巴巴集团控股有限公司 | 漏洞检测方法、装置及计算设备 |
CN109165507B (zh) * | 2018-07-09 | 2021-02-19 | 深圳开源互联网安全技术有限公司 | 跨站脚本攻击漏洞检测方法、装置及终端设备 |
CN110874475A (zh) * | 2018-08-30 | 2020-03-10 | 重庆小雨点小额贷款有限公司 | 漏洞挖掘方法、漏洞挖掘平台及计算机可读存储介质 |
CN109508547A (zh) * | 2018-11-16 | 2019-03-22 | 北京城市网邻信息技术有限公司 | 一种应用程序漏洞的定位方法、装置、存储介质及终端 |
CN111382444B (zh) * | 2018-12-27 | 2023-08-29 | 台达电子工业股份有限公司 | 软件安全检测系统及软件安全检测方法 |
CN109918913A (zh) * | 2019-03-12 | 2019-06-21 | 国网新疆电力有限公司电力科学研究院 | 一种漏洞检测方法和装置 |
CN110381033B (zh) * | 2019-06-24 | 2021-06-08 | 深圳开源互联网安全技术有限公司 | Web应用漏洞检测方法、装置、系统、存储介质和服务器 |
CN112395637A (zh) * | 2019-08-15 | 2021-02-23 | 奇安信安全技术(珠海)有限公司 | 数据库防护方法及装置、存储介质、计算机设备 |
CN110737887B (zh) * | 2019-10-22 | 2021-11-30 | 厦门美图之家科技有限公司 | 恶意代码检测方法、装置、电子设备及存储介质 |
CN111552967A (zh) * | 2020-04-15 | 2020-08-18 | 杭州孝道科技有限公司 | 一种应用软件安全漏洞检测方法 |
CN111585975B (zh) * | 2020-04-17 | 2023-03-14 | 上海中通吉网络技术有限公司 | 安全漏洞检测方法、设备及系统、交换机 |
CN111859375B (zh) * | 2020-07-20 | 2023-08-29 | 百度在线网络技术(北京)有限公司 | 漏洞检测方法、装置、电子设备及存储介质 |
CN112765026A (zh) * | 2021-01-21 | 2021-05-07 | 杭州安恒信息技术股份有限公司 | 一种动态监测phpweb应用代码漏洞方法及相关装置 |
CN112528296B (zh) * | 2021-02-10 | 2021-05-25 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置和存储介质及电子设备 |
CN114386045B (zh) * | 2021-12-24 | 2023-07-07 | 深圳开源互联网安全技术有限公司 | 一种Web应用程序漏洞检测方法、装置及存储介质 |
CN117806971B (zh) * | 2024-01-03 | 2024-08-09 | 北京北大软件工程股份有限公司 | 一种自适应分析配置方法和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104363236A (zh) * | 2014-11-21 | 2015-02-18 | 西安邮电大学 | 一种自动化漏洞验证的方法 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
CN105204985A (zh) * | 2014-06-23 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及装置 |
CN105678169A (zh) * | 2015-12-30 | 2016-06-15 | 西安胡门网络技术有限公司 | 一种二进制程序漏洞挖掘方法和系统 |
US9426177B2 (en) * | 2013-07-15 | 2016-08-23 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for detecting security vulnerability for animation source file |
-
2017
- 2017-09-30 CN CN201710938470.6A patent/CN107657177B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9426177B2 (en) * | 2013-07-15 | 2016-08-23 | Tencent Technology (Shenzhen) Company Limited | Method and apparatus for detecting security vulnerability for animation source file |
CN105204985A (zh) * | 2014-06-23 | 2015-12-30 | 腾讯科技(深圳)有限公司 | 漏洞检测方法及装置 |
CN104363236A (zh) * | 2014-11-21 | 2015-02-18 | 西安邮电大学 | 一种自动化漏洞验证的方法 |
CN104598383A (zh) * | 2015-02-06 | 2015-05-06 | 中国科学院软件研究所 | 一种基于模式的动态漏洞挖掘集成系统和方法 |
CN105678169A (zh) * | 2015-12-30 | 2016-06-15 | 西安胡门网络技术有限公司 | 一种二进制程序漏洞挖掘方法和系统 |
Non-Patent Citations (1)
Title |
---|
《一种基于安全状态跟踪检查的漏洞静态检测方法》;梁彬等;《计算机学报》;20090515;第32卷(第5期);900-909 * |
Also Published As
Publication number | Publication date |
---|---|
CN107657177A (zh) | 2018-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107657177B (zh) | 一种漏洞检测方法及装置 | |
US10878106B2 (en) | Firmware verification | |
Yang et al. | Leakminer: Detect information leakage on android with static taint analysis | |
CN105069355B (zh) | webshell变形的静态检测方法和装置 | |
CN109359468B (zh) | 漏洞检测方法、装置及设备 | |
CN106295348B (zh) | 应用程序的漏洞检测方法及装置 | |
JP2014038596A (ja) | 悪意ある実行ファイルの識別方法 | |
WO2015184752A1 (zh) | 一种异常进程检测方法及装置 | |
KR20130051116A (ko) | 애플리케이션 보안성 점검 자동화 장치 및 방법 | |
CN103996007A (zh) | Android应用权限泄露漏洞的测试方法及系统 | |
KR20150134679A (ko) | 패치파일 분석시스템과 분석방법 | |
CN113489713A (zh) | 网络攻击的检测方法、装置、设备及存储介质 | |
CN110909363A (zh) | 基于大数据的软件第三方组件漏洞应急响应系统及方法 | |
CN108881271B (zh) | 一种代理主机的反向追踪溯源方法及装置 | |
CN110929264A (zh) | 漏洞检测方法、装置、电子设备及可读存储介质 | |
CN110232279A (zh) | 一种漏洞检测方法及装置 | |
CN107103237A (zh) | 一种恶意文件的检测方法及装置 | |
CN115391230A (zh) | 一种测试脚本生成、渗透测试方法、装置、设备及介质 | |
CN111611590A (zh) | 涉及应用程序的数据安全的方法及装置 | |
CN110298179B (zh) | 开源框架安全漏洞检测方法及装置 | |
CN116932381A (zh) | 小程序安全风险自动化评估方法及相关设备 | |
JP2016099857A (ja) | 不正プログラム対策システムおよび不正プログラム対策方法 | |
CN105791250A (zh) | 应用程序检测方法及装置 | |
KR20160090566A (ko) | 유효마켓 데이터를 이용한 apk 악성코드 검사 장치 및 방법 | |
CN111460448B (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 |