CN109214188A - 一种漏洞分析方法和装置及数据处理方法和装置 - Google Patents
一种漏洞分析方法和装置及数据处理方法和装置 Download PDFInfo
- Publication number
- CN109214188A CN109214188A CN201710526665.XA CN201710526665A CN109214188A CN 109214188 A CN109214188 A CN 109214188A CN 201710526665 A CN201710526665 A CN 201710526665A CN 109214188 A CN109214188 A CN 109214188A
- Authority
- CN
- China
- Prior art keywords
- data
- data transfer
- transfer characteristic
- variable storage
- event
- 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.)
- Granted
Links
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)
- Stored Programmes (AREA)
Abstract
本申请实施例提供了一种漏洞分析方法和装置,所述方法包括:检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;确定第一功能函数的第二数据传递特征;判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。根据本申请实施例,节省了检测和漏洞分析的处理资源和处理时间。
Description
技术领域
本申请涉及数据安全检测领域,特别是涉及一种漏洞分析方法和一种漏洞分析装置,以及,一种数据处理方法和一种数据处理装置。
背景技术
目前,软件提供方可以将制作的应用软件上传至各类应用软件平台,供其他用户下载使用。软件提供方制作的应用软件可能存在着安全漏洞,例如,应用软件的程序逻辑中可能首先获取到某个用户的电话号码,然后将该电话号码存放在某个变量存储位置中,该变量存储位置又将电话号码发送至公共网络中,从而导致了用户个人信息的泄露。
为了避免用户获取到具有安全漏洞的应用软件,所以软件提供方通常会将应用软件提交至软件检测平台,软件检测平台调用漏洞分析程序对应用软件的程序逻辑进行检测,以发现可能泄露用户个人信息的数据传递事件,并相应地提示软件提供方应用软件中的漏洞,供软件提供方对应用软件中的程序逻辑进行修复等处理。
然而,现有技术中的漏洞分析方法存在着耗费处理资源和处理时间的问题。
发明内容
本申请实施例所要解决的技术问题是提供一种漏洞分析方法和装置,以及,一种数据处理方法和装置。
为了解决上述问题,本申请提供了一种漏洞分析方法,所述方法包括:
检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
确定第一功能函数的第二数据传递特征;
判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
可选地,所述获取第一数据传递特征包括:
在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
可选地,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述生成标记所述数据传递事件的数据传递子特征包括:
识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征包括:
根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
在所述将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为所述第一数据传递特征之前,所述获取第一数据传递特征还包括:
判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
可选地,在所述判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配之后,所述方法还包括:
取消对匹配的数据传递事件的漏洞分析。
可选地,所述方法还包括:
判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
可选地,在所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
可选地,所述生成第一功能函数的第二数据传递特征包括:
在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
可选地,所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成;
所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述方法还包括:
根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
可选地,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
可选地,在所述按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
可选地,所述查找针对所述当前节点定义的实际在后节点包括:
对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
提取所述父节点针对所述当前节点定义的实际在后节点。
可选地,所述根据所述程序逻辑生成程序控制流程图包括:
检测所述程序逻辑中的判断语句;
以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
为了解决上述问题,本申请还提供了一种漏洞分析装置,所述装置包括:
事件检测模块,用于检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
第一数据传递特征获取模块,用于获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
第二数据传递特征确定模块,用于确定第一功能函数的第二数据传递特征;
覆盖判定模块,用于判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
目标变量存储位置查找模块,用于查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
可选地,所述第一数据传递特征获取模块包括:
第一子特征生成子模块,用于在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
第一数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
可选地,所述事件检测模块包括:
数据传递指令查找子模块,用于在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述数据传递子特征生成子模块包括:
目标变量存储位置识别子单元,用于识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
子特征生成子单元,用于根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述所述子特征生成子单元包括:
子特征生成组件,用于根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
所述第一数据传递特征获取模块还包括:
首个子特征判定子模块,用于判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
可选地,所述装置还包括:
漏洞分析取消模块,用于取消对匹配的数据传递事件的漏洞分析。
可选地,所述装置还包括:
漏洞分析恢复模块,用于判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
可选地,所述装置还包括:
第二数据传递特征生成模块,用于生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
可选地,所述第二数据传递特征生成模块包括:
指令对应事件子模块,用于在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
第二子特征生成子模块,用于生成标记所述数据传递事件的数据传递子特征;
第二数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
可选地,所述目标变量存储位置查找模块包括:
最后数据传递指令查找子模块,用于在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
解析子模块,用于从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
第一变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成;
目标变量存储位置查找模块包括:
位置信息提取子模块,用于从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
位置信息确定子模块,用于根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
第二变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述装置还包括:
程序控制流程图生成模块,用于根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
可选地,所述事件检测模块包括:
节点事件检测子模块,用于按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
可选地,所述装置还包括:
第二功能函数判定模块,用于判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
实际在后节点查找模块,用于查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
可选地,所述实际在后节点查找模块包括:
回溯子模块,用于对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
在后节点提取子模块,用于提取所述父节点针对所述当前节点定义的实际在后节点。
可选地,所述程序控制流程图生成模块包括:
判断语句检测子模块,用于检测所述程序逻辑中的判断语句;
流程图生成子模块,用于以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
为了解决上述问题,本申请还提供了一种数据处理方法,所述方法包括:
获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转至所述第二数据传递特征的目标变量存储位置继续执行。
可选地,所述获取计算机程序的第一数据传递特征包括:
获取所述计算机程序对应的程序逻辑;
检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
从所述数据传递事件中提取所述第一数据传递特征。
可选地,所述预设的第二数据传递特征包括功能函数的数据传递特征。
为了解决上述问题,本申请还提供了一种数据处理装置,所述装置包括:
第一数据传递特征获取模块,用于获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
第二数据传递特征确定模块,用于确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转模块,用于跳转至所述第二数据传递特征的目标变量存储位置继续执行。
可选地,所述第一数据传递特征获取模块包括:
程序逻辑获取子模块,用于获取所述计算机程序对应的程序逻辑;
事件检测子模块,用于检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
特征提取子模块,用于从所述数据传递事件中提取所述第一数据传递特征。
可选地,所述预设的第二数据传递特征包括功能函数的数据传递特征。
为了解决上述问题,本申请还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如上述的一个或多个的方法。
为了解决上述问题,本申请还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如上述的一个或多个的方法。
与现有技术相比,本申请实施例包括以下优点:
根据本申请实施例,通过针对程序逻辑的执行过程中变量存储位置之间的数据传递事件生成第一数据传递特征,在第一数据传递特征覆盖第一功能函数对应的第二数据传递特征时,确定程序逻辑包含第一功能函数及第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,跳转至目标变量存储位置的数据传递事件继续进行检测和漏洞分析,从而使得漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,节省了检测和漏洞分析的处理资源和处理时间。
根据本申请实施例,漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,直接查找到第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,从而可以继续针对目标变量存储位置的数据传递事件的检测和漏洞分析,即使程序逻辑调用了漏洞分析程序无法识别和穿越的功能函数,也可以保证漏洞分析程序继续对目标变量存储位置进行检测和漏洞分析。
根据本申请实施例,通过判定某个数据传递事件对应的数据传递子特征,与第二数据传递特征中首个数据传递事件的数据传递子特征匹配时,再进一步生成标识连续多个数据传递事件的第一数据传递特征并进行第一功能函数的识别,避免了对多个数据传递子特征分别进行匹配,节省了匹配的处理时间。
根据本申请实施例,基于更新后的程序控制流程图所反映的程序逻辑进行漏洞分析,提升了漏洞分析的准确性。
附图说明
图1是本申请实施例一的一种漏洞分析方法的步骤流程图;
图2是本申请实施例二的一种漏洞分析方法的步骤流程图;
图3是本申请实施例三的一种漏洞分析装置的结构框图;
图4是本申请实施例四的一种漏洞分析装置的结构框图;
图5是本申请实施例五的一种数据处理方法的步骤流程图;
图6是本申请实施例六的一种数据处理装置的结构框图;
图7是本申请的一种漏洞分析方法的处理流程示意图;
图8是本申请的一种基于MD5功能函数的数据传递事件的示意图一;
图9是本申请的一种基于MD5功能函数的数据传递事件的示意图二;
图10是本申请的一种基于MD5功能函数的数据传递事件的示意图三;
图11是本申请的一种基于MD5功能函数的数据传递事件的示意图四;
图12是本申请的一种程序控制流程图的示意图;
图13是本申请的一种程序控制流程图更新示意图;
图14是本申请的一种实现本公开中所述的各个实施例的示例性系统。
具体实施方式
为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请作进一步详细的说明。
经申请人研究发现,在对应用软件的程序逻辑进行漏洞分析时,可以采用漏洞分析程序跟踪变量存储位置的数据传递事件,以分析数据传递事件是否存在着将用户的个人信息发送至公共网络的风险。在跟踪变量存储位置的数据传递事件时,变量存储位置可能会进入一些功能函数,即,应用软件的程序逻辑调用了某个功能函数进行数据处理。
功能函数可以从某个变量存储位置调用某个数据,然后针对数据进行运算处理,并将经处理所得到的数据存放在另外一个变量存储位置。程序逻辑在调用功能函数进行数据处理的过程中,功能函数可能会执行多次上述的操作,每次操作均可能产生数据传递事件,从而产生多次的数据传递事件。如果要对应用软件的程序逻辑进行漏洞分析,则需要识别出功能函数的各种操作指令,以跟踪变量存储位置的之间的数据传递事件。
然而,经申请人进一步研究发现,功能函数通常包括有大量复杂的操作指令,如果由漏洞分析程序识别功能函数的各种操作指令,以针对功能函数所产生的数据传递事件进行漏洞分析,通常需要耗费大量的处理资源和处理时间,而功能函数通常是安全的。因此,本申请实施例提供了一种漏洞分析方法,以使得漏洞分析程序可以跳过对程序逻辑所调用的至少部分功能函数进行漏洞分析,节省了漏洞分析的处理资源和处理时间。
为了便于本领域技术人员深入理解本申请实施例,以下将首先介绍本申请实施例中所涉及的专业术语的定义。
变量存储位置,包括存储供程序代码调用的某个变量的位置。变量可以被赋值为数值或字符,被赋值的数值或字符可以实际存储在某个物理寄存器(例如CPU内部)或者内存的某个存储空间。例如,变量P1存储在内存的某个存储位置上,可以将该存储位置标记为变量存储位置P1,程序代码可以根据变量存储位置P1在内存相应的位置上获取到变量P1。
数据传递指令,包括指示将某个变量存储位置的变量数据传递至另一变量存储位置的变量以对其进行赋值的程序代码。例如,某个用于指示数据传递的程序代码被转换为中间语言Smali代码后,为数据传递指令“aget-byte,V2,V5”,该指令指示将变量V2的值输出至变量V5,即,将变量存储位置V2的数据传递至变量存储位置V5;又例如,某个被转换为中间语言Smali代码的程序代码“and-int/lit8,V0,V10”,指示将变量V0和变量V10进行与运算,并将运算结果赋值于变量V10,即,将变量存储位置V0的数据传递至变量存储位置V10。
程序逻辑,包括程序指令之间的执行关系。例如,执行一系列的程序指令,首先,执行程序指令01,从数据库获取用户A的电话号码,然后顺序执行或者调用程序指令02;执行程序指令02,判断用户A是否属于预设类别的用户,若判断结果为是,则将用户A的电话号码存储在变量存储位置A,然后顺序执行或者调用程序指令03;执行程序指令03,从变量存储位置A提取用户A的电话号码后,并将该电话号码发送至变量存储位置B,然后顺序执行或者调用程序指令04;执行程序指令04,将暂存在变量存储位置B内的所有数据发送至公共网络中的某个终端。
源变量存储位置,包括当前发送数据的变量存储位置。例如,变量存储位置A将数据发送至变量存储位置B,可以将变量存储位置A作为源变量存储位置。
目标变量存储位置,包括当前接收数据的变量存储位置。例如,变量存储位置A将数据发送至变量存储位置B,可以将变量存储位置B作为目标变量存储位置。
数据传递事件,包括在程序逻辑的执行过程中,根据程序逻辑的指示将某个变量存储位置的数据传递至另一变量存储位置的事件。其中,一个数据传递事件可以包括有执行的数据传递指令,源变量存储位置的标识和目标变量存储位置的标识。数据传递事件可以是两个变量存储位置之间进行一次数据传递的事件,例如,将目标数据从一个变量存储位置传递至另一变量存储位置。数据传递事件也可以是两个变量存储位置之间进行多次数据传递的事件,例如,变量存储位置A将数据01传递至变量存储位置B,变量存储位置B又将数据02传递至变量存储位置A。数据传递事件还可以是多个变量存储位置之前进行多次数据传递的事件,例如,变量存储位置A将数据01传递至变量存储位置B,变量存储位置B将数据01和数据02传递至变量存储位置C。
漏洞分析,包括识别程序逻辑的执行过程中是否会影响数据安全,以及,定位可能影响数据安全的部分程序逻辑。例如,识别出将用户的电话号码、身份证信息等个人信息发送至公共网络的程序逻辑。
数据传递特征,包括用于标识数据传递事件的特征。数据传递特征可以标识一个数据传递事件,也可以标识连续多个的数据传递事件。例如,根据数据传递指令01某个数据从变量存储位置A传递至变量存储位置B,又根据数据传递指令02将该数据从变量存储位置B传递至变量存储位置C,然后又根据数据传递指令03将该数据从变量存储位置C传递至变量存储位置D,可以采用“数据传递指令01-变量存储位置A-变量存储位置B”作为标识一个数据传递事件的数据传递特征,也可以采用“1、数据传递指令01,变量存储位置A,变量存储位置B;2、数据传递指令02-变量存储位置B,变量存储位置C;3、数据传递指令03-变量存储位置C,变量存储位置D”该按照传递次序将各个数据传递事件的数据传递指令、源变量存储位置的标识和目标变量存储位置的标识所形成特征序列,作为标识连续多个数据传递事件的数据传递特征。
数据传递子特征,包括在标识连续多个数据传递事件的数据传递特征中,对应标识某单个数据传递事件的特征。例如,根据数据传递指令01某个数据从变量存储位置A传递至变量存储位置B,又根据数据传递指令02将该数据从变量存储位置B传递至变量存储位置C,例如,将对应标识根据数据传递指令01进行变量存储位置之间数据传递的数据传递事件的特征,作为数据传递特征中的某一个数据传递子特征。
功能函数,包括在程序逻辑的执行过程中所调用的、用于实现各种运算和操作功能的函数,例如,Base64(二进制编码方式),md5(Message Digest Algorithm 5,消息摘要算法第五版),sha1(Secure Hash Algorithm,安全哈希算法)等。需要说明的是,下文的接口类函数、特征语言的专用函数、操作系统函数是按照函数的功能特征、应用对象或函数特征进行区分命名,该三类具体的函数可能属于功能函数,也可能不属于功能函数,即,该三类函数与功能函数之间并没有必然联系。
接口类函数,包括用于调用某个接口以采用该接口实现某个处理的函数,采用接口类函数可以直接得到处理的结果,而无须得知该结果的处理过程和处理方法。例如,调用SendMessage(…)发消息函数的接口,即可实现采用该接口发送某个消息。
特征语言的专用函数,包括具有特征语言特性的函数,特征语言可以是语言所表达的指令与常规语言不同的语言,例如,JAVA语言的“+”符号作为连接符对数值进行连接处理,而并非作为常规的加号对数据进行求和处理。
操作系统函数,包括某个操作系统预先配置的函数,可供程序直接调用。例如,C语言的标准库函数(C Standard Library)中的I/O(输入/输出)函数。
判断语句,包括程序代码中进行判断数据是否满足某个预设条件的语句。例如,C语言的if、if_else。
程序控制流程图,包括将程序代码反编译成中间语言(IR,IntermediateRepresentation)后,根据中间语言生成的反映程序代码执行时的程序逻辑的节点图;或者根据程序代码直接生成的反映程序代码执行时的程序逻辑的节点图。
节点,包括程序控制流程图中代表各个没有产生跳转的代码片段的节点。例如,某个判断语句在执行后,将会从当前的代码片段跳转至执行另一代码片段,由此,可以将跳转前后的两段代码片段分别作为程序控制流程图中的两个节点。
原始在后节点,包括在程序控制流程图中,与当前节点连接的下一个节点,用于在程序控制流程图中表示当前节点代表的代码片段跳转后的代码片段对应的节点。
实际在后节点,包括在程序控制流程图中,与当前节点没有连接、但实际上为当前节点代表的代码片段跳转后的代码片段对应的节点。
针对上述的程序控制流程图、节点、原始在后节点、实际在后节点的定义,可以参考如下例子:将程序代码反编译成中间语言的代码后,根据代码的判断语句划分各个代码片段,包括:代码片段P1、代码片段P2,代码片段C1、代码片段B1和代码片段R1;在确定代码片段后,可以将每个代码片段作为一个节点,得到节点P1、节点P2,节点C1和节点B1。可以根据代码片段之间的跳转关系,确定节点的连接关系。假设代码片段P1跳转至代码片段P2,然后跳转至代码片段C1,然后跳转至代码片段B1。因此,节点P2是节点P1的原始在后节点,节点C1是节点P2的原始在后节点,节点B1是节点C1的原始在后节点。在进行漏洞查找时,发现节点P2包括调用接口类函数的代码,针对节点P2查找该接口类函数的调用方法,根据查找到的调用方法确定代码片段P2实际调用的代码片段为代码片段B1,即节点P2的实际在后节点为节点B1,节点C1并非节点P2的实际在后节点。
实施例一
实施例一提供了一种漏洞分析方法,该方法可以具体应用于软件检测平台,也可以应用于单机检测(例如手机端、PC端等)。
图1示出了本申请实施例一的一种漏洞分析方法的步骤流程图,所述方法可以具体包括如下步骤:
步骤101,检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析。
首先需要说明的是,其中,变量存储位置之间的数据传递事件属于程序逻辑的执行过程中所产生的一种事件,通常为变量存储位置按照传递指令将某个数据传递至另一变量存储位置。
其中,程序逻辑的执行过程中、尤其是数据传递事件的执行可能存在着影响数据安全的漏洞。例如,将包含有用户的手机号码、身份证号码等信息的数据发送至公共网络,可能导致用户个人信息的泄露。因此,可以针对程序逻辑的执行过程中的数据传递事件进行检测,以便采用静态漏洞分析程序等的漏洞分析程序对数据传递事件是否存在漏洞进行分析。当变量存储位置之间的数据传递事件中存在有漏洞,则可以相应进行漏洞报警,并通知用户出现漏洞的代码片段或者数据传递事件。
此外需要说明的是,本申请实施例所提供的漏洞分析方法可以适用于基于不同操作系统开发的软件的漏洞分析。例如,可以针对Android系统(安卓系统)开发的软件进行程序漏洞分析,也可以针对iOS系统(苹果操作系统)开发的软件进行程序漏洞分析。
在实际的应用场景中,通常具有一些提供各类应用软件下载的平台,例如,Android应用市场,苹果上的AppStore等。可以在该类平台上应用本申请实施例的漏洞分析方法,从而将该平台作为软件检测平台。应用软件提供方或应用软件使用方可以将应用软件上传至软件检测平台,由软件检测平台针对应用软件的安全性进行检测和评价,以便将安全性较低的安全软件在平台中删除或屏蔽,避免用户下载到有安全漏洞的应用软件。
步骤102,获取第一数据传递特征,所述第一数据传递特征用于标识步骤101得到的连续多个数据传递事件。
其中,可以通过反编译程序,得到中间语言,从该中间语言中可以获取到程序逻辑的执行过程中所产生的数据传递事件。每个数据传递事件可以包括有执行的数据传递指令,发送数据的源变量存储位置的标识和接收数据的目标变量存储位置的标识。可以根据数据传递事件中的数据传递指令,发送数据的源变量存储位置的标识和接收数据的目标变量存储位置的标识,生成标识数据传递事件的第一数据传递特征。
例如,其中,第一数据传递特征可以标识多个数据传递事件,也可以标识一个数据传递事件。标识多个数据传递事件时,第一数据传递特征可以标识连续多个的数据传递事件,以反映数据在多个变量存储位置之间的传递顺序,例如,某个数据从变量存储位置A传递至变量存储位置B后,又从变量存储位置B传递至变量存储位置C,第一数据传递特征可以将各个变量存储位置按照数据传递事件的发生顺序进行排列;标识一个数据传递事件时,第一数据传递特征可以标识初始的数据传递事件。
步骤103,确定第一功能函数的第二数据传递特征。
步骤104,判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数。
实际应用中,常用的功能函数的运算和操作等处理的处理顺序较为固定,即程序逻辑调用某个功能函数时变量存储位置之间的数据传递事件将会按照一定的顺序产生。因此,可以预置各个已知功能函数所对应的数据传递特征,作为第二数据传递特征。可以通过多种方式预置第二数据传递特征,例如,通过统计并保存预先采集功能函数的数据传递特征作为第二数据传递特征。
具体实现中,可以将第一数据传递特征与各个功能函数对应的第二数据传递特征进行比较,当某个功能函数的第二数据传递特征被第一数据传递特征所覆盖,可以将该功能函数作为第一功能函数,并确定程序逻辑包含有第一功能函数,即该程序逻辑当前调用了第一功能函数。
不同的功能函数可以具有不同的第二数据传递特征。因此,当存在多种功能函数时,可以分别确定各个功能函数的第二数据传递特征。以便在第一数据传递特征覆盖某个第二数据传递特征时,确定该某个第二数据传递特征对应的功能函数。
实际的应用场景中,数据传递特征可以包括有分别对应连续多个数据传递事件的多个数据传递子特征,每个数据传递子特征可以包括有数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息等信息,将第一数据传递特征与第二数据传递特征的各个数据传递子特征依次进行匹配,若数据传递子特征中的数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息等信息均相同,则可以确定两条数据传递子特征之间匹配。当第二数据传递特征的全部数据传递子特征均与第一数据传递特征的全部或部分数据传递子特征匹配,则可以判定第一数据传递特征覆盖第二数据传递特征,从而可以确定程序逻辑包含第二数据传递特征对应的第一功能函数。例如,第一数据传递特征包括数据传递子特征101、数据传递子特征102、数据传递子特征103、数据传递子特征104和数据传递子特征105;第二数据传递特征包括数据传递子特征201、数据传递子特征202和数据传递子特征203;其中,数据传递子特征101和数据传递子特征201之间、数据传递子特征102和数据传递子特征202之间、数据传递子特征103和数据传递子特征203之间,数据传递指令的标识、源变量存储位置和目标变量存储位置均相同,因此,可以判定第一数据传递特征覆盖第二数据传递特征。
当然,可以采用多种方式判定第一数据传递特征覆盖第二数据传递特征,例如,将第一数据传递特征和第二数据传递特征中所包含的数据传递指令的标识按照指令的执行顺序逐一比较,当标识均一致时判定第二数据传递特征覆盖第二数据传递特征。本申请实施例对具体的判定方式不作限定。
步骤105,查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
具体实现中,在确定第一功能函数后,可以查找第一功能函数存放所输出数据的变量存储位置作为目标变量存储位置,可以暂停对当前的变量存储位置的分析并跳转至目标变量存储位置,针对目标变量存储位置的数据传递事件进行检测和漏洞分析。
例如,程序逻辑中包含有一系列数据传递子特征,子特征01、子特征02、子特征03、子特征04、子特征05……子特征10……子特征N,子特征02至子特征05与某个功能函数的子特征匹配,因此可以确定程序逻辑包含功能函数,而且,可以确定子特征10为该功能函数的结束位置,该功能函数的输出数据存储在子特征10标识的目标变量存储位置上,因此,可以停止对子特征02至子特征09所标识的数据传递事件进行漏洞分析,而直接跳转到子特征10标识的数据传递事件,针对该数据传递事件的目标变量存储位置,继续检测功能函数和进行数据漏洞分析。
在实际应用中,功能函数中通常包含有大量的如数组存取、移位、与、异、或等的复杂操作,对上述操作进行检测和漏洞分析需要耗费大量的处理资源和处理时间。而且,程序逻辑调用的功能函数通常是已经确认为安全的函数,如果对功能函数进行检测和漏洞分析,则会造成处理资源的浪费,并大量增加处理时间。
因此,根据本申请一个实施例,通过针对程序逻辑的执行过程中变量存储位置之间的数据传递事件生成第一数据传递特征,在第一数据传递特征覆盖第一功能函数对应的第二数据传递特征时,确定程序逻辑包含第一功能函数,确定第一功能函数的输出数据的目标变量存储位置,跳转至目标变量存储位置的数据传递事件继续进行检测和漏洞分析,从而使得漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,节省了检测和漏洞分析的处理资源和处理时间。
而且,由于功能函数中通常包含有大量的复杂操作,由于漏洞分析程序仅预存了少量的较为通用的指令,因此漏洞分析程序无法识别出功能函数的数据传递指令,即无法识别所发生的数据传递事件,从而导致漏洞分析程序无法识别和穿越功能函数,即无法查找到功能函数所输出数据在程序逻辑中存放的变量存储位置,从而导致检测和漏洞分析失败。根据本申请实施例,漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,直接查找到第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,从而可以继续针对目标变量存储位置的数据传递事件的检测和漏洞分析,即使程序逻辑调用了漏洞分析程序无法识别和穿越的功能函数,也可以保证漏洞分析程序继续对目标变量存储位置进行检测和漏洞分析。
实施例二
实施例二提供了一种漏洞分析方法,该方法可以具体应用于软件检测平台,图2示出了本申请实施例二的一种漏洞分析方法的步骤流程图,所述方法可以具体包括如下步骤:
步骤201,生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
可选地,所述步骤201包括:
子步骤S11,在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件。
子步骤S12,生成标记所述数据传递事件的数据传递子特征。
子步骤S13,将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
具体实现中,可以针对不同的功能函数生成对应的第二数据传递特征。该第二数据传递特征可以标识功能函数的执行过程中,数据在多个变量存储位置之间的传递过程。更具体地,可以选择某个功能函数作为第一功能函数,从中按照执行顺序查找数据传递指令,由一个数据传递指令对应一次数据传递事件。针对每个数据传递事件,生成对应的数据传递子特征。将发生的多个数据传递事件分别生成数据传递子特征后,可以按照第一功能函数中各个数据传递事件的发生顺序,将多个数据传递子特征依次组合为第二数据传递特征。
实际应用中,可以查找出变量存储位置在功能函数中的流经路径,即各个数据传递事件的发生顺序。
实际应用中,还可以在第二数据传递特征中定义第一功能函数的出口,例如在第二数据传递特征中添加有第一功能函数的出口的位置信息,该位置信息可以包括有第一功能函数输出数据对应存放的目标变量存储位置的位置信息。从而可以在后续的处理中,在确定第一功能函数时,根据第二数据传递特征中的出口的位置信息定位目标变量存储位置。
实际应用中,可以将各种功能函数的全部数据传递指令预存在漏洞分析程序中,漏洞分析程序可以根据预存的指令识别当前的指令是否属于数据传递指令,从而可以根据识别出的数据传递指令,确定数据从源变量存储位置传递至目标变量存储位置,并针对目标变量存储位置继续进行漏洞分析。
步骤202,检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析。
步骤203,获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件。
可选地,所述步骤203包括:
子步骤S21,在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征。
子步骤S22,将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
具体实现中,可以在检测到一个或多个数据传递事件时,触发生成标记该一个或多个数据传递事件的数据传递子特征,并将多个数据传递事件对应的数据传递子特征,按照数据传递事件的发生顺序组合为第一数据传递特征。从而得到包含有按照数据传递事件的发生顺序排列的多个数据传递子特征的第一数据传递特征。
可选地,所述步骤202包括:
子步骤S31,在程序逻辑中按序查找对应一次数据传递事件的数据传递指令。
所述子步骤S21包括:
子步骤S21-1,识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置。
子步骤S21-2,根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
具体实现中,可以在检测程序逻辑的执行过程中变量存储位置之间的数据传递事件的时候,查找触发某一次数据传递事件的数据传递指令。在生成标记所述数据传递事件的数据传递子特征的过程中,可以识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置,并根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述子步骤S21-2具体为:
根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
具体实现中,可以根据数据传递指令生成对应的数据传递子特征,每个数据传递子特征可以包括有“指令标识+源变量存储位置在数据传递指令中的位置信息+目标变量存储位置在数据传递指令中的位置信息”。
例如,某个数据传递指令中包括有指令标识“move”,源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息“R1”和“R2”,按照上述信息生成记录指令所对应的数据传递事件的数据传递子特征“move+R1+R2”。
可选地,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成。
在所述子步骤S22之前,所述步骤203可以还包括:
子步骤S20,判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
具体实现中,在根据数据传递事件生成对应的数据传递子特征后,可以首先将其与第二数据传递特征中首个数据传递事件的数据传递子特征进行匹配,若匹配,表明该数据传递事件可能是调用了某个功能函数后所产生的数据传递事件,可以进一步进行后续的数据传递子特征的匹配。
可选地,在所述子步骤S20之后,所述方法还包括:
取消对匹配的数据传递事件的漏洞分析。
具体实现中,当判定首个数据传递子特征匹配后,表明当前的数据传递事件由很大概率是由于某个功能函数而产生的,即程序逻辑很有可能在当前进入了某个功能函数,因此可以取消对该数据传递事件进行漏洞分析,待后续判断出当前是否进入某个第一功能函数后,根据判断结果恢复对当前的数据传递事件的分析或跳转至目标变量存储位置的数据传递事件继续分析。
实际应用中,通常采用漏洞分析程序的漏洞分析算法分析各种事件的漏洞,在确定某一个或连续N个的数据传递事件的数据传递子特征与第二数据传递特征中的首个或前N个的数据传递子特征匹配时,可以暂停运行漏洞分析程序的漏洞分析算法,并启动特征匹配算法,以对第一数据传递特征是否覆盖第一功能函数对应的第二数据传递特征进行判断。
更具体地,漏洞分析程序可以在采用漏洞分析算法分析数据传递事件是否存在漏洞的时候,同时读取下一条数据传递指令,将读取的数据传递指令与各功能函数的首个数据传递指令进行匹配,若匹配到某个功能函数,漏洞分析程序则暂停漏洞分析算法的分析处理,并继续读取次条数据传递指令,根据次条数据传递指令生成数据传递子特征,与各功能函数的第二数据传递特征对应的数据传递子特征通过特征匹配算法进行匹配,若匹配成功继续读取第三条数据传递指令并继续匹配,当所读取的N条数据传递指令均匹配,则可以确定多条的数据传递子特征属于第二功能函数的第二数据传递特征,当前的程序逻辑进入到某个功能函数。漏洞分析程序可以直接跳转至该功能函数的出口位置,查找到该功能函数输出数据在所述程序逻辑中对应存放的目标变量存储位置,恢复漏洞分析算法对目标变量存储位置进行漏洞分析,并继续读取目标变量存储位置的下一条数据传递指令。
可选地,所述方法还包括:
判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
具体实现中,当判定第一数据传递特征并未覆盖任何一种功能函数对应的第二数据传递特征,则表明程序逻辑并没有进入功能函数,因此可以针对在此前被确认匹配的数据传递事件恢复漏洞分析。
步骤204,确定第一功能函数的第二数据传递特征。
步骤205,判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数。
步骤206,查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
可选地,所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
子步骤S31,在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令。
子步骤S32,从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息。
子步骤S33,根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
具体实现中,可以在程序逻辑中查找到第一功能函数对应的最后一个数据传递指令。该最后一个数据传递指令通常为第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,即第一功能函数的出口。可以从该最后一个数据传递指令中,解析得到目标变量存储位置的位置信息,从而可以根据目标变量存储位置的位置信息跳转至目标变量存储位置,并针对目标变量存储位置的数据传递事件进行检测和漏洞分析。
实际应用中,在确定第一功能函数后,可以向漏洞分析程序发送出口信息以指示漏洞分析程序跳转至目标变量存储位置。其中,出口信息可以包括有第一数据传递特征中最后一个数据传递子特征所对应的数据传递指令在逻辑程序中的位置,与第一功能函数最后一个数据传递指令在逻辑程序中的位置的位置偏移值,以及第一功能函数最后一个数据传递指令的指令标识和目标变量存储位置在第一功能函数最后一个数据传递指令中的位置信息。漏洞分析程序可以根据出口信息查找到目标变量存储位置,并跳转至目标变量存储位置,继续进行数据传递事件的检测和漏洞分析。
可选地,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成,所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
子步骤S41,从所述第二数据传递特征中提取第一功能函数的出口的位置信息。
子步骤S42,根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
子步骤S43,根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
需要说明的是,出口的位置信息可以包括第一数据传递特征中最后一个数据传递子特征所对应的数据传递指令在逻辑程序中的位置,与第一功能函数最后一个数据传递指令在逻辑程序中的位置的位置偏移值。
具体实现中,可以从第二数据传递特征中提取到第一功能函数的出口的位置信息,根据该位置信息中的位置偏移值,可以确定第一功能函数所输出数据对应存放的目标变量存储位置的位置信息,并根据目标变量存储位置的位置信息定位目标变量存储位置。
根据本申请实施例,通过判定某个数据传递事件对应的数据传递子特征,与第二数据传递特征中首个数据传递事件的数据传递子特征匹配时,再进一步生成标识连续多个数据传递事件的第一数据传递特征并进行第一功能函数的识别,避免了对多个数据传递子特征分别进行匹配,节省了匹配的处理时间。
在实际的静态漏洞分析过程中,程序控制流程图中的路径可以反映出代码执行时的程序逻辑,根据程序控制流程图中指示的路径进行漏洞分析,可以判断出程序逻辑中是否存在漏洞。更具体地,可以根据代码中的判断语句对数据进行判断,根据不同的判断结果执行后续不同的语句,即某个包含判断语句的代码片段执行后可能跳转至另一代码片段,可以将没有产生跳转的代码片段作为一个节点,将跳转关系作为节点之间的关联。从而形成多个直接或间接关联的节点,由多个节点形成上述的程序控制流程图。
如果需要分析程序逻辑中更深层次的漏洞,则需要还原出真实的程序逻辑,即真实的节点之间的关联。然而,程序逻辑中可能会调用函数,而中间语言无法针对调用函数准确识别,而可能将调用函数定义的无效代码片段作为关联的节点,而没有将调用函数的有效代码片段作为实际关联的节点,从而导致程序控制流程图中无法表达正确的程序逻辑的技术问题。
针对于上述的技术问题,本申请实施例还提供了一种程序控制流程图的生成机制,以便得到可以准确反映实际的程序逻辑的程序控制流程图,以提升漏洞分析的准确性。实际应用中,下述的程序控制流程图的生成机制可以单独实施,也可以在本申请实施例上述的漏洞分析方法的基础上实施。以下将公开在本申请的漏洞分析方法的基础上,进一步实现程序控制流程图的生成机制示例:
在实施检测程序逻辑的执行过程中变量存储位置之间的数据传递事件以进行漏洞分析之前,可选地,可以还包括:
根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
具体实现中,可以将应用软件的程序逻辑反编译成中间代码,利用中间代码生成程序控制流程图。该程序控制流程图可以包括有多个按照执行顺序连接而成的多个节点,每个节点可以对应变量存储位置时间的数据传递事件。
实际应用中,可以将程序逻辑中连续执行的代码片段作为一个节点,当出现非连续执行的代码片段,例如将数据传递至另一变量存储位置的数据传递指令,则生成下一节点。
可选地,所述方法还包括:
判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
具体实现中,可以判断待检测的当前节点是否属于第二功能函数。第二功能函数可以包括接口类函数,特征语言的专用函数,操作系统函数等。程序控制流程图无法反映出经第二功能函数处理后的实际在后节点。例如,程序控制流程图不能表达面向对象的接口类函数,比如Java中频繁用到的接口,当调用接口的某个方法时,程序控制流程图中并不能表达出该接口实际调用的方法,从而导致查找节点的过程中断;又例如,程序控制流程图不能表达特征语言的专用函数,比如Java语言中的Thread类,当调用Thread类的start()方法时,Java虚拟机会自动调用Thread的run()方法,但在程序控制流程图中并不能展现出从start()到run()的过程;又例如,程序控制流程图不能表达操作系统函数。比如在扫描Android平台的漏洞时,当控制流达到某个系统函数后,控制流就中断了。如startActivity可能将启动另一个组件进行分析,但在控制流中到startActivity函数就中断了。
若当前节点属于第二功能函数,则查找针对当前节点的实际在后节点,并将程序控制流程图中当前节点的原始在后节点删除,并替换为实际在后节点。即,在程序控制流程图中建立起当前节点与实际在后节点的连接关系。
可选地,所述查找针对所述当前节点定义的实际在后节点包括:
子步骤S51,对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
子步骤S52,提取所述父节点针对所述当前节点定义的实际在后节点。
具体实现中,查找实际在后节点的时,可以对此前查找至当前节点的路径进行回溯,在回溯的路径上可以确定定义当前节点的父节点,并查找父节点针对当前节点定义的实际在后节点,将实际在后节点提取。
实际应用中,可以在回溯的路径上查找对应于各个节点的代码片段中是否包含有标记第二功能函数的函数标识,如果包含有该标识,表明在该节点内可能存在第二功能函数的具体的调用方法,可以进一步在该节点内查找第二功能函数的调用方法,并根据调用方法所指示的节点,确定针对当前节点定义的实际在后节点。如果没有包含标记第二功能函数的函数标识,则继续回溯,遍历当前节点的父节点,直到查找到当前节点的实际在后节点。例如,对于包含JAVA接口类函数的当前节点,在回溯路径上查找到Java接口调用的实际对象,或者,针对包含安卓系统的操作系统函数查找到startAvtivity方法所指示的实际链接地址。
可选地,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
子步骤S61,按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
可选地,所述根据所述程序逻辑生成程序控制流程图包括:
子步骤S71,检测所述程序逻辑中的判断语句;
子步骤S71,以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
具体实现中,可以检测代码中的判断语句。判断语句通常会根据不同的判断结果执行不同的语句,所执行的不同语句可以形成当前节点的若干个在后节点。例如,在当前节点A00包含有判断数据是否满足设定条件的语句00,当满足时则执行语句01,不满足时执行语句02,将当前节点作为父节点,所执行的语句01和02分别形成父节点的在后节点A01和A02。
通过以判断语句以及判断语句对应的执行语句分别作为节点,使得程序控制流程图中的各个节点均包含有程序中连续执行的代码片段。
在针对当前节点的实际在后节点进行更新后,可以按照更新的程序控制流程图针对各节点的执行过程中变量存储位置之间的数据传递事件进行检测。由于更新后的程序控制流程图中各个节点可以反映出程序逻辑的实际运行流程,因此,根据本申请实施例,基于更新后的程序控制流程图所反映的程序逻辑进行漏洞分析,提升了漏洞分析的准确性。
为了便于本领域技术人员理解本申请实施例,以下将结合图7-13的具体示例予以说明。
图7示出了本申请的一种漏洞分析方法的处理流程示意图。从图中可见,漏洞分析程序在检测程序逻辑的执行过程中变量存储位置之间的数据传递事件时,在程序逻辑中按序查找对应一次数据传递事件的数据传递指令,并生成标记该数据传递事件的数据传递子特征。然后判断该数据传递子特征是否与第二数据传递特征的首个数据传递子特征匹配,若否则继续采用漏洞分析算法对变量存储位置之间的数据传递事件进行漏洞分析;若分析出该条数据传递指令中存在漏洞,可以进行相应的漏洞报警,若没有则继续读取下一条数据传递指令。
如果当前所读取的数据传递指令所对应的数据传递子特征与第二数据传递特征的首个数据传递子特征匹配,则可以暂停漏洞分析算法,调用特征匹配算法,以判断第一数据传递特征是否覆盖第一功能函数对应的第二数据传递特征。
更具体地,在调用特征匹配算法后,可以继续读取下一条数据传递指令并相应生成对应的数据传递子特征,当下一数据传递子特征于第二数据传递特征对应的数据传递子特征匹配,则退出特征匹配算法,恢复漏洞分析算法对当前的数据传递事件进行漏洞分析;若多个数据传递子特征依次与第二数据传递特征的数据传递子特征匹配,则表明当前的数据传递指令属于第一功能函数的数据传递指令,程序逻辑当前调用了第一功能函数,因此可以查找第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,退出特征匹配算法,跳转至针对目标变量存储位置的数据传递事件的检测和漏洞分析。
图8-图11示出了本申请的一种基于MD5功能函数的数据传递事件的示意图。从图中可见,在Java语言中将MD5功能函数通过反编译算法转换为中间语言Smali后,得到记录有多个数据操作事件,提取其中的数据传递事件并生成数据传递子特征,将多个数据传递子特征按照数据传递事件的发生顺序排列得到如下表中的第一数据传递特征:
需要说明的是,漏洞分析程序当前针对变量存储位置P0的数据传递事件进行漏洞分析,但该变量存储位置P0在进入MD5功能函数后,如果按照现有技术中的数据流跟踪方法是无法穿越该MD5功能函数并继续针对数据传递后的变量存储位置进行漏洞分析的,因为MD5功能函数涉及到大量的复杂的操作。而且,现有技术中的数据流跟踪方法不会将上述的指令识别为变量存储位置之间传递数据的指令,但在MD5功能函数中,实际上发生了数据传递事件。通过本申请的漏洞分析方法,可以将从变量存储位置P0进入MD5至MD5结束时将所输出数据存放在目标变量存储位置v2之间,所经过的一系列变量存储位置之间的数据传递事件,生成对应的数据传递特征,并启动特征匹配算法将其与各种功能函数的数据传递特征进行匹配,从而判断漏洞分析程序是否进入到MD5功能函数中。当判定进入到MD5,漏洞分析程序则直接穿越到MD5的末尾,查找目标变量存储位置并继续漏洞分析。
图12示出了本申请的一种程序控制流程图的示意图。从图中可见,当前在利用程序控制流程图进行漏洞分析,确定待检测的当前节点P2包含一个借口函数调用,即属于第二功能函数,下一个调用节点C1即为空函数节点,没有具体内容。因此,可以停止当前的漏洞分析,启动一个节点查找算法,从P2开始反向寻找生成接口的实际节点,并在节点F找到生成接口的实际节点,根据节点F查找到P2的实际在后节点为B1。
图13示出了本申请的一种程序控制流程图更新示意图。从图中可见,根据实际在后节点B1,将P2的在后节点替换为实际在后节点B1,并继续对节点B1进行漏洞分析。
需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请实施例并不受所描述的动作顺序的限制,因为依据本申请实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本申请实施例所必须的。
实施例三
与实施例一对应,本申请实施例三还提供了一种漏洞分析装置,该装置可以具体应用于软件检测平台。图3示出了本申请实施例三的一种漏洞分析装置的结构框图,所述装置具体可以包括如下模块:
事件检测模块301,用于检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析。
第一数据传递特征获取模块302,用于获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件。
第二数据传递特征确定模块303,用于确定第一功能函数的第二数据传递特征。
覆盖判定模块304,用于判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数。
目标变量存储位置查找模块305,用于查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
根据本申请实施例,通过针对程序逻辑的执行过程中变量存储位置之间的数据传递事件生成第一数据传递特征,在第一数据传递特征覆盖第一功能函数对应的第二数据传递特征时,确定程序逻辑包含第一功能函数及第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,跳转至目标变量存储位置的数据传递事件继续进行检测和漏洞分析,从而使得漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,节省了检测和漏洞分析的处理资源和处理时间。
根据本申请实施例,漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行检测和漏洞分析,直接查找到第一功能函数的输出数据在程序逻辑中对应存放的目标变量存储位置,从而可以继续针对目标变量存储位置的数据传递事件的检测和漏洞分析,即使程序逻辑调用了漏洞分析程序无法识别和穿越的功能函数,也可以保证漏洞分析程序继续对目标变量存储位置进行检测和漏洞分析。
实施例四
与实施例二对应,本申请实施例四还提供了一种漏洞分析装置,该装置可以具体应用于软件检测平台。图4示出了本申请实施例四的一种漏洞分析装置的结构框图,所述装置具体可以包括如下模块:
第二数据传递特征生成模块401,用于生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
事件检测模块402,用于检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析。
第一数据传递特征获取模块403,用于获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件。
第二数据传递特征确定模块404,用于确定第一功能函数的第二数据传递特征。
覆盖判定模块405,用于判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数。
目标变量存储位置查找模块406,用于查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
可选地,所述第一数据传递特征获取模块403包括:
第一子特征生成子模块,用于在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
第一数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
可选地,所述事件检测模块402包括:
数据传递指令查找子模块,用于在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述数据传递子特征生成子模块包括:
目标变量存储位置识别子单元,用于识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
子特征生成子单元,用于根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述子特征生成子单元包括:
子特征生成组件,用于根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
可选地,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
所述第一数据传递特征获取模块403还包括:
首个子特征判定子模块,用于判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
可选地,所述装置还包括:
漏洞分析取消模块,用于取消对匹配的数据传递事件的漏洞分析。
可选地,所述装置还包括:
漏洞分析恢复模块,用于判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
可选地,所述第二数据传递特征生成模块401包括:
指令对应事件子模块,用于在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
第二子特征生成子模块,用于生成标记所述数据传递事件的数据传递子特征;
第二数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
可选地,所述目标变量存储位置查找模块406包括:
最后数据传递指令查找子模块,用于在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
解析子模块,用于从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
第一变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成,所述目标变量存储位置查找模块406包括:
位置信息提取子模块,用于从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
位置信息确定子模块,用于根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
第二变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
可选地,所述装置还包括:
程序控制流程图生成模块,用于根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
可选地,所述事件检测模块402包括:
节点事件检测子模块,用于按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
可选地,所述装置还包括:
第二功能函数判定模块,用于判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
实际在后节点查找模块,用于查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
可选地,所述实际在后节点查找模块包括:
回溯子模块,用于对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
在后节点提取子模块,用于提取所述父节点针对所述当前节点定义的实际在后节点。
可选地,所述程序控制流程图生成模块包括:
判断语句检测子模块,用于检测所述程序逻辑中的判断语句;
流程图生成子模块,用于以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
根据本申请实施例,通过判定某个数据传递事件对应的数据传递子特征,与第二数据传递特征中首个数据传递事件的数据传递子特征匹配时,再进一步生成标识连续多个数据传递事件的第一数据传递特征并进行第一功能函数的识别,避免了对多个数据传递子特征分别进行匹配,节省了匹配的处理时间。
根据本申请实施例,基于更新后的程序控制流程图所反映的程序逻辑进行漏洞分析,提升了漏洞分析的准确性。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
实施例五
实施例五提供了一种数据处理方法。图5示出了本申请实施例五的一种数据处理方法的步骤流程图,所述方法可以具体包括如下步骤:
步骤501,获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识。
可选地,所述步骤501可以包括以下子步骤:
子步骤S81,获取所述计算机程序对应的程序逻辑;
子步骤S82,检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
子步骤S83,从所述数据传递事件中提取所述第一数据传递特征。
具体实现中,计算机程序可以具有对应的程序逻辑,程序逻辑中包含有变量存储位置之间的数据传递事件。可以提取数据传递事件中的数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息,采用数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识,形成上述的第一数据传递特征。
步骤502,确定所述第一数据传递特征包括预设的第二数据传递特征。
可选地,所述预设的第二数据传递特征包括功能函数的数据传递特征。
具体实现中,可以将常用的功能函数的数据传递特征,预设为第二数据传递特征。当第一数据传递特征包含有第二数据传递特征时,表明计算机程序的程序逻辑中包含有功能函数。
步骤503,跳转至所述第二数据传递特征的目标变量存储位置继续执行。
当第一数据传递特征包括预设的第二数据传递特征时,可以直接跳转至第二数据传递特征中预设的用户保存功能函数所输出数据的目标变量存储位置,在目标变量存储位置继续执行漏洞分析。
根据本申请实施例,跳转至目标变量存储位置执行漏洞分析,从而使得漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行漏洞分析,节省了漏洞分析的处理资源和处理时间。
实施例六
与实施例五对应,本申请实施例六还提供了一种数据处理装置。图6示出了本申请实施例六的一种数据处理装置的结构框图,所述装置具体可以包括如下模块:
第一数据传递特征获取模块601,用于获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识。
第二数据传递特征确定模块602,用于确定所述第一数据传递特征包括预设的第二数据传递特征。
跳转模块603,用于跳转至所述第二数据传递特征的目标变量存储位置继续执行。
可选地,所述第一数据传递特征获取模块601可以包括以下子模块:
程序逻辑获取子模块,用于获取所述计算机程序对应的程序逻辑;
事件检测子模块,用于检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
特征提取子模块,用于从所述数据传递事件中提取所述第一数据传递特征。
可选地,所述预设的第二数据传递特征包括功能函数的数据传递特征。
根据本申请实施例,跳转至目标变量存储位置执行漏洞分析,从而使得漏洞分析程序可以跳过对程序逻辑所调用的功能函数进行漏洞分析,节省了漏洞分析的处理资源和处理时间。
本公开的实施例可被实现为使用任意适当的硬件,固件,软件,或及其任意组合进行想要的配置的系统。图14示意性地示出了可被用于实现本公开中所述的各个实施例的示例性系统1400。
对于一个实施例,图14示出了示例性系统1400,该系统具有一个或多个处理器1402、被耦合到一个或多个处理器1402中的至少一个的系统控制模块(芯片组)1404、被耦合到系统控制模块1404的系统存储器1406、被耦合到系统控制模块1404的非易失性存储器(NVM)/存储设备1408、被耦合到系统控制模块1404的一个或多个输入/输出设备1410,以及被耦合到系统控制模块1406的网络接口1412。
处理器1402可包括一个或多个单核或多核处理器,处理器1402可包括通用处理器或专用处理器(例如图形处理器、应用处理器、基频处理器等)的任意组合。在一些实施例中,系统1400能够作为本申请实施例中所述的浏览器。
在一些实施例中,系统1400可包括具有指令的一个或多个计算机可读介质(例如,系统存储器1406或NVM/存储设备1408)以及与该一个或多个计算机可读介质相合并被配置为执行指令以实现模块从而执行本公开中所述的动作的一个或多个处理器1402。
对于一个实施例,系统控制模块1404可包括任意适当的接口控制器,以向一个或多个处理器1402中的至少一个和/或与系统控制模块1404通信的任意适当的设备或组件提供任意适当的接口。
系统控制模块1404可包括存储器控制器模块,以向系统存储器1406提供接口。存储器控制器模块可以是硬件模块、软件模块和/或固件模块。
系统存储器1406可被用于例如为系统1400加载和存储数据和/或指令。对于一个实施例,系统存储器1406可包括任意适当的易失性存储器,例如,适当的DRAM。在一些实施例中,系统存储器1406可包括双倍数据速率类型四同步动态随机存取存储器(DDR4SDRAM)。
对于一个实施例,系统控制模块1404可包括一个或多个输入/输出控制器,以向NVM/存储设备1408及一个或多个输入/输出设备1410提供接口。
例如,NVM/存储设备1408可被用于存储数据和/或指令。NVM/存储设备1408可包括任意适当的非易失性存储器(例如,闪存)和/或可包括任意适当的(一个或多个)非易失性存储设备(例如,一个或多个硬盘驱动器(HDD)、一个或多个光盘(CD)驱动器和/或一个或多个数字通用光盘(DVD)驱动器)。
NVM/存储设备1408可包括在物理上作为系统1400被安装在其上的设备的一部分的存储资源,或者其可被该设备访问而不必作为该设备的一部分。例如,NVM/存储设备1408可通过网络经由(一个或多个)输入/输出设备1410进行访问。
(一个或多个)输入/输出设备1410可为系统1400提供接口以与任意其他适当的设备通信,输入/输出设备1410可以包括通信组件、音频组件、传感器组件等。网络接口1412可为系统1400提供接口以通过一个或多个网络通信,系统1400可根据一个或多个无线网络标准和/或协议中的任意标准和/或协议来与无线网络的一个或多个组件进行无线通信,例如接入基于通信标准的无线网络,如WiFi,2G或3G,或它们的组合进行无线通信。
对于一个实施例,一个或多个处理器1402中的至少一个可与系统控制模块1404的一个或多个控制器(例如,存储器控制器模块)的逻辑封装在一起。对于一个实施例,(一个或多个)处理器1402中的至少一个可与系统控制模块1404的一个或多个控制器的逻辑封装在一起以形成系统级封装(SiP)。对于一个实施例,一个或多个处理器1402中的至少一个可与系统控制模块1404的一个或多个控制器的逻辑集成在同一模具上。对于一个实施例,(一个或多个)处理器1402中的至少一个可与系统控制模块1404的一个或多个控制器的逻辑集成在同一模具上以形成片上系统(SoC)。
在各个实施例中,系统1400可以但不限于是:浏览器、工作站、台式计算设备或移动计算设备(例如,膝上型计算设备、手持计算设备、平板电脑、上网本等)。在各个实施例中,系统1400可具有更多或更少的组件和/或不同的架构。例如,在一些实施例中,系统1400包括一个或多个摄像机、键盘、液晶显示器(LCD)屏幕(包括触屏显示器)、非易失性存储器端口、多个天线、图形芯片、专用集成电路(ASIC)和扬声器。
其中,如果显示器包括触摸面板,显示屏可以被实现为触屏显示器,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。所述触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与所述触摸或滑动操作相关的持续时间和压力。
本申请实施例还提供了一种非易失性可读存储介质,该存储介质中存储有一个或多个模块(programs),该一个或多个模块被应用在终端设备时,可以使得该终端设备执行本申请实施例中各方法步骤的指令(instructions)。
在一个示例中提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如本申请实施例的方法。
在一个示例中还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如本申请实施例的一个或多个的方法。
本申请实施例公开了一种漏洞分析方法和装置,以及,一种数据处理方法和装置。
示例1包括一种漏洞分析方法,包括:
检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
确定第一功能函数的第二数据传递特征;
判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
示例2可包括示例1所述的方法,其中,所述获取第一数据传递特征包括:
在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
示例3可包括示例2所述的方法,其中,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述生成标记所述数据传递事件的数据传递子特征包括:
识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
示例4可包括示例3所述的方法,其中,所述根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征包括:
根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
示例5可包括示例2所述的方法,其中,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
在所述将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为所述第一数据传递特征之前,所述获取第一数据传递特征还包括:
判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
示例6可包括示例5所述的方法,其中,在所述判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配之后,所述方法还包括:
取消对匹配的数据传递事件的漏洞分析。
示例7可包括示例6所述的方法,其中,所述方法还包括:
判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
示例8可包括示例1所述的方法,其中,在所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
示例9可包括示例8所述的方法,其中,所述生成第一功能函数的第二数据传递特征包括:
在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
示例10可包括示例1所述的方法,其中,所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
示例11可包括示例1所述的方法,其中,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成;
所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
示例12可包括示例1所述的方法,其中,所述方法还包括:
根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
示例13可包括示例12所述的方法,其中,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
示例14可包括示例12所述的方法,其中,在所述按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
示例15可包括示例14所述的方法,其中,所述查找针对所述当前节点定义的实际在后节点包括:
对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
提取所述父节点针对所述当前节点定义的实际在后节点。
示例16可包括示例14所述的方法,其中,所述根据所述程序逻辑生成程序控制流程图包括:
检测所述程序逻辑中的判断语句;
以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
示例17可包括一种漏洞分析装置,包括:
事件检测模块,用于检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
第一数据传递特征获取模块,用于获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
第二数据传递特征确定模块,用于确定第一功能函数的第二数据传递特征;
覆盖判定模块,用于判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
目标变量存储位置查找模块,用于查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
示例18可包括示例17所述的装置,其中,所述第一数据传递特征获取模块包括:
第一子特征生成子模块,用于在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
第一数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
示例19可包括示例18所述的装置,其中,所述事件检测模块包括:
数据传递指令查找子模块,用于在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述数据传递子特征生成子模块包括:
目标变量存储位置识别子单元,用于识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
子特征生成子单元,用于根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
示例20可包括示例19所述的装置,其中,所述所述子特征生成子单元包括:
子特征生成组件,用于根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
示例21可包括示例18所述的装置,其中,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
所述第一数据传递特征获取模块还包括:
首个子特征判定子模块,用于判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
示例22可包括示例21所述的装置,其中,所述装置还包括:
漏洞分析取消模块,用于取消对匹配的数据传递事件的漏洞分析。
示例23可包括示例22所述的装置,其中,所述装置还包括:
漏洞分析恢复模块,用于判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
示例24可包括示例17所述的装置,其中,所述装置还包括:
第二数据传递特征生成模块,用于生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
示例25可包括示例24所述的装置,其中,所述第二数据传递特征生成模块包括:
指令对应事件子模块,用于在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
第二子特征生成子模块,用于生成标记所述数据传递事件的数据传递子特征;
第二数据传递特征组合子模块,用于将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
示例26可包括示例17所述的装置,其中,所述目标变量存储位置查找模块包括:
最后数据传递指令查找子模块,用于在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
解析子模块,用于从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
第一变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
示例27可包括示例17所述的装置,其中,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成;
目标变量存储位置查找模块包括:
位置信息提取子模块,用于从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
位置信息确定子模块,用于根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
第二变量存储位置定位子模块,用于根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
示例28可包括示例17所述的装置,其中,所述装置还包括:
程序控制流程图生成模块,用于根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
示例29可包括示例28所述的装置,其中,所述事件检测模块包括:
节点事件检测子模块,用于按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
示例30可包括示例28所述的装置,其中,所述装置还包括:
第二功能函数判定模块,用于判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
实际在后节点查找模块,用于查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
示例31可包括示例30所述的装置,其中,所述实际在后节点查找模块包括:
回溯子模块,用于对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
在后节点提取子模块,用于提取所述父节点针对所述当前节点定义的实际在后节点。
示例32可包括示例30所述的装置,其中,所述程序控制流程图生成模块包括:
判断语句检测子模块,用于检测所述程序逻辑中的判断语句;
流程图生成子模块,用于以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
示例33可包括一种数据处理方法,包括:
获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转至所述第二数据传递特征的目标变量存储位置继续执行。
示例34可包括示例33所述的方法,其中,所述获取计算机程序的第一数据传递特征包括:
获取所述计算机程序对应的程序逻辑;
检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
从所述数据传递事件中提取所述第一数据传递特征。
示例35可包括示例33所述的方法,其中,所述预设的第二数据传递特征包括功能函数的数据传递特征。
示例36可包括一种数据处理装置,包括:
第一数据传递特征获取模块,用于获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
第二数据传递特征确定模块,用于确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转模块,用于跳转至所述第二数据传递特征的目标变量存储位置继续执行。
示例37可包括示例36所述的装置,其中,所述第一数据传递特征获取模块包括:
程序逻辑获取子模块,用于获取所述计算机程序对应的程序逻辑;
事件检测子模块,用于检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
特征提取子模块,用于从所述数据传递事件中提取所述第一数据传递特征。
示例38可包括示例36所述的装置,其中,所述预设的第二数据传递特征包括功能函数的数据传递特征。
示例39、一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如示例1-16、示例33-35所述的一个或多个的方法。
示例40、一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如示例1-16、示例33-35所述的一个或多个的方法。
虽然某些实施例是以说明和描述为目的的,各种各样的替代、和/或、等效的实施方案、或计算来达到同样的目的实施例示出和描述的实现,不脱离本申请的实施范围。本申请旨在覆盖本文讨论的实施例的任何修改或变化。因此,显然本文描述的实施例仅由权利要求和它们的等同物来限定。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
本领域内的技术人员应明白,本申请实施例的实施例可提供为方法、装置、或计算机程序产品。因此,本申请实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
在一个典型的配置中,所述计算机设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非持续性的电脑可读媒体(transitory media),如调制的数据信号和载波。
本申请实施例是参照根据本申请实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请实施例范围的所有变更和修改。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
以上对本申请所提供的技术方案进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (23)
1.一种漏洞分析方法,其特征在于,包括:
检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
确定第一功能函数的第二数据传递特征;
判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
2.根据权利要求1所述的方法,其特征在于,所述获取第一数据传递特征包括:
在检测到数据在变量存储位置之间的数据传递事件时,生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为第一数据传递特征。
3.根据权利要求2所述的方法,其特征在于,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
在程序逻辑中按序查找对应一次数据传递事件的数据传递指令;
所述生成标记所述数据传递事件的数据传递子特征包括:
识别数据传递指令中发送数据的源变量存储位置以及接收数据的目标变量存储位置;
根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征。
4.根据权利要求3所述的方法,其特征在于,所述根据所述源变量存储位置和所述目标变量存储位置分别在程序逻辑中的位置信息,生成记录本次数据传递事件的数据传递子特征包括:
根据所述数据传递指令的标识、源变量存储位置和目标变量存储位置分别在数据传递指令中的位置信息,生成记录本次数据传递事件的数据传递子特征。
5.根据权利要求2所述的方法,其特征在于,所述第二数据传递特征由第一功能函数的执行过程中顺序发生的部分或全部数据传递事件的数据传递子特征构成;
在所述将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照数据传递事件的发生次序组合为所述第一数据传递特征之前,所述获取第一数据传递特征还包括:
判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配。
6.根据权利要求5所述的方法,其特征在于,在所述判定某个数据传递事件对应的数据传递子特征,与所述第二数据传递特征中首个数据传递事件的数据传递子特征匹配之后,所述方法还包括:
取消对匹配的数据传递事件的漏洞分析。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
判定所述第一数据传递特征并未覆盖所述第一功能函数对应的第二数据传递特征,则恢复对所述匹配的数据传递事件的漏洞分析。
8.根据权利要求1所述的方法,其特征在于,在所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
生成第一功能函数的第二数据传递特征,所述第二数据传递特征标识所述第一功能函数的执行过程中数据在多个变量存储位置之间的传递过程。
9.根据权利要求8所述的方法,其特征在于,所述生成第一功能函数的第二数据传递特征包括:
在第一功能函数中按序查找数据传递指令,并将一个数据传递指令对应一次数据传递事件;
生成标记所述数据传递事件的数据传递子特征;
将顺序发生的多个数据传递事件分别对应的数据传递子特征,按照第一功能函数中数据传递事件的发生次序组合为第二数据传递特征。
10.根据权利要求1所述的方法,其特征在于,所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
在所述程序逻辑中查找所述第一功能函数对应的最后一个数据传递指令;
从所述最后一个数据传递指令中,解析出第一功能函数的输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
11.根据权利要求1所述的方法,其特征在于,所述第二数据传递特征中还定义有第一功能函数的出口的位置信息,所述出口的位置信息由输出数据对应存放的目标变量存储位置的位置信息以及出口与目标变量存储位置的位置偏移值组成;
所述查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置包括:
从所述第二数据传递特征中提取第一功能函数的出口的位置信息;
根据所述出口的位置信息确定输出数据对应存放的目标变量存储位置的位置信息;
根据所述目标变量存储位置的位置信息定位所述目标变量存储位置。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
根据所述程序逻辑生成程序控制流程图;所述程序控制流程图由多个节点按照执行顺序连接而成,各节点对应至少一个变量存储位置之间的数据传递事件。
13.根据权利要求12所述的方法,其特征在于,所述检测程序逻辑的执行过程中变量存储位置之间的数据传递事件包括:
按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件。
14.根据权利要求12所述的方法,其特征在于,在所述按照所述程序控制流程图检测各节点的执行过程中变量存储位置之间的数据传递事件之前,所述方法还包括:
判定待检测的当前节点为第二功能函数,所述第二功能函数为接口类函数、特征语言的专用函数或操作系统函数;
查找针对所述当前节点定义的实际在后节点,并将程序控制流程图中当前节点的原始在后节点替换为所述实际在后节点。
15.根据权利要求14所述的方法,其特征在于,所述查找针对所述当前节点定义的实际在后节点包括:
对查找至所述当前节点的路径进行回溯,并在回溯的路径上确定定义所述当前节点的父节点;
提取所述父节点针对所述当前节点定义的实际在后节点。
16.根据权利要求14所述的方法,其特征在于,所述根据所述程序逻辑生成程序控制流程图包括:
检测所述程序逻辑中的判断语句;
以判断语句以及判断语句对应的执行语句分别作为节点,生成程序控制流程图。
17.一种漏洞分析装置,其特征在于,包括:
事件检测模块,用于检测程序逻辑的执行过程中变量存储位置之间的数据传递事件,以基于所述数据传递事件进行漏洞分析;
第一数据传递特征获取模块,用于获取第一数据传递特征,所述第一数据传递特征用于标识连续多个数据传递事件;
第二数据传递特征确定模块,用于确定第一功能函数的第二数据传递特征;
覆盖判定模块,用于判定所述第一数据传递特征覆盖所述第二数据传递特征,则确定所述程序逻辑包含所述第一功能函数;
目标变量存储位置查找模块,用于查找所述第一功能函数的输出数据在所述程序逻辑中对应存放的目标变量存储位置,并跳转至所述目标变量存储位置,以继续检测数据传递事件和进行漏洞分析。
18.一种数据处理方法,其特征在于,包括:
获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转至所述第二数据传递特征的目标变量存储位置继续执行。
19.根据权利要求18所述的数据处理方法,其特征在于,所述获取计算机程序的第一数据传递特征包括:
获取所述计算机程序对应的程序逻辑;
检测所述程序逻辑包含的数据传递事件;所述数据传递事件包括数据传递指令、源变量存储位置在计算机程序中的位置信息和目标变量存储位置在计算机程序中的位置信息;
从所述数据传递事件中提取所述第一数据传递特征。
20.根据权利要求18所述的数据处理方法,其特征在于,所述预设的第二数据传递特征包括功能函数的数据传递特征。
21.一种数据处理装置,其特征在于,包括:
第一数据传递特征获取模块,用于获取计算机程序的第一数据传递特征,其中,所述数据传递特征包括数据传递指令的标识、源变量存储位置在计算机程序中的位置信息的标识、以及目标变量存储位置在计算机程序中的位置信息的标识;
第二数据传递特征确定模块,用于确定所述第一数据传递特征包括预设的第二数据传递特征;
跳转模块,用于跳转至所述第二数据传递特征的目标变量存储位置继续执行。
22.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-16、18-20所述的一个或多个的方法。
23.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-16、18-20所述的一个或多个的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710526665.XA CN109214188B (zh) | 2017-06-30 | 2017-06-30 | 一种漏洞分析方法和装置及数据处理方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710526665.XA CN109214188B (zh) | 2017-06-30 | 2017-06-30 | 一种漏洞分析方法和装置及数据处理方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109214188A true CN109214188A (zh) | 2019-01-15 |
CN109214188B CN109214188B (zh) | 2022-05-27 |
Family
ID=64977218
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710526665.XA Active CN109214188B (zh) | 2017-06-30 | 2017-06-30 | 一种漏洞分析方法和装置及数据处理方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109214188B (zh) |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7530107B1 (en) * | 2007-12-19 | 2009-05-05 | International Business Machines Corporation | Systems, methods and computer program products for string analysis with security labels for vulnerability detection |
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
US20100083240A1 (en) * | 2006-10-19 | 2010-04-01 | Checkmarx Ltd | Locating security vulnerabilities in source code |
US20110055818A1 (en) * | 2009-08-26 | 2011-03-03 | Kabushiki Kaisha Toshiba | Source code analyzing system and source code analyzing method |
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
US20130312102A1 (en) * | 2012-05-18 | 2013-11-21 | International Business Machines Corporation | Verifying application security vulnerabilities |
CN103577324A (zh) * | 2013-10-30 | 2014-02-12 | 北京邮电大学 | 移动应用中隐私信息泄露的静态检测方法 |
US20140359776A1 (en) * | 2013-05-29 | 2014-12-04 | Lucent Sky Corporation | Method, system, and computer program product for automatically mitigating vulnerabilities in source code |
US20150161393A1 (en) * | 2013-12-11 | 2015-06-11 | International Business Machines Corporation | Quantitative analysis of information leakage vulnerabilities |
CN105550594A (zh) * | 2015-12-17 | 2016-05-04 | 西安电子科技大学 | 安卓应用文件的安全性检测方法 |
CN105677574A (zh) * | 2016-03-10 | 2016-06-15 | 南京邮电大学 | 基于函数控制流的安卓应用漏洞检测方法和系统 |
CN106815135A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 漏洞检测方法及装置 |
-
2017
- 2017-06-30 CN CN201710526665.XA patent/CN109214188B/zh active Active
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100083240A1 (en) * | 2006-10-19 | 2010-04-01 | Checkmarx Ltd | Locating security vulnerabilities in source code |
US7530107B1 (en) * | 2007-12-19 | 2009-05-05 | International Business Machines Corporation | Systems, methods and computer program products for string analysis with security labels for vulnerability detection |
CN101482847A (zh) * | 2009-01-19 | 2009-07-15 | 北京邮电大学 | 一种基于安全漏洞缺陷模式的检测方法 |
US20110055818A1 (en) * | 2009-08-26 | 2011-03-03 | Kabushiki Kaisha Toshiba | Source code analyzing system and source code analyzing method |
US20130312102A1 (en) * | 2012-05-18 | 2013-11-21 | International Business Machines Corporation | Verifying application security vulnerabilities |
CN102737190A (zh) * | 2012-07-04 | 2012-10-17 | 复旦大学 | 基于静态分析的Android应用日志中信息泄漏隐患的检测方法 |
US20140359776A1 (en) * | 2013-05-29 | 2014-12-04 | Lucent Sky Corporation | Method, system, and computer program product for automatically mitigating vulnerabilities in source code |
CN103577324A (zh) * | 2013-10-30 | 2014-02-12 | 北京邮电大学 | 移动应用中隐私信息泄露的静态检测方法 |
US20150161393A1 (en) * | 2013-12-11 | 2015-06-11 | International Business Machines Corporation | Quantitative analysis of information leakage vulnerabilities |
CN106815135A (zh) * | 2015-11-30 | 2017-06-09 | 阿里巴巴集团控股有限公司 | 漏洞检测方法及装置 |
CN105550594A (zh) * | 2015-12-17 | 2016-05-04 | 西安电子科技大学 | 安卓应用文件的安全性检测方法 |
CN105677574A (zh) * | 2016-03-10 | 2016-06-15 | 南京邮电大学 | 基于函数控制流的安卓应用漏洞检测方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109214188B (zh) | 2022-05-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106844217A (zh) | 对应用的控件进行埋点的方法及装置、可读存储介质 | |
CN110262818A (zh) | Java代码热更新方法、装置、电子设备及存储介质 | |
CN104572436B (zh) | 自动调试与防错方法及装置 | |
CN104317648B (zh) | 一种监测广告的方法和装置 | |
CN104115117A (zh) | 用于安全性测试的单元测试的自动合成 | |
CN106295346B (zh) | 一种应用漏洞检测方法、装置及计算设备 | |
CN106326091A (zh) | 一种浏览器网页兼容性的检测方法及系统 | |
CN107729897A (zh) | 一种文本操作方法、装置及终端 | |
CN113268243A (zh) | 内存预测方法及装置、存储介质、电子设备 | |
CN105516321A (zh) | 一种数据采集方法和装置 | |
CN107102950A (zh) | 一种应用程序测试方法和装置 | |
CN105574150A (zh) | 一种数据处理方法和装置 | |
CN110119354A (zh) | 基于测试用例生成的软件测试方法、装置及电子设备 | |
CN107895119A (zh) | 程序安装包检测方法、装置及电子设备 | |
CN114253866B (zh) | 恶意代码检测的方法、装置、计算机设备及可读存储介质 | |
CN104063424B (zh) | 网页图片的展现方法和展现装置 | |
CN104991857B (zh) | 跟踪调试方法及装置 | |
CN109684213A (zh) | 一种测试方法、装置及存储介质 | |
CN110889116A (zh) | 一种广告拦截方法、装置及电子设备 | |
CN109214188A (zh) | 一种漏洞分析方法和装置及数据处理方法和装置 | |
CN111260080A (zh) | 基于机器学习的流程优化方法、装置、终端及存储介质 | |
CN109857392A (zh) | 一种html5组件的智能开发方法、装置及电子设备 | |
CN110851370A (zh) | 程序测试方法及装置、存储介质 | |
CN114510305B (zh) | 模型训练方法、装置、存储介质及电子设备 | |
CN109901859A (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 |