CN106709356B - 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 - Google Patents
基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 Download PDFInfo
- Publication number
- CN106709356B CN106709356B CN201611113164.0A CN201611113164A CN106709356B CN 106709356 B CN106709356 B CN 106709356B CN 201611113164 A CN201611113164 A CN 201611113164A CN 106709356 B CN106709356 B CN 106709356B
- Authority
- CN
- China
- Prior art keywords
- function
- analysis
- source
- data
- pollution
- 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
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)
- Debugging And Monitoring (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种基于静态污点分析和符号执行的安卓应用漏洞挖掘方法,主要解决现有用静态污点分析方法挖掘漏洞的过程中,分析范围固定,内存消耗巨大,分析结果存在误报的问题,其实现方案是1)配置分析目标并反编译程序源码;2)对反编译的结果进行控制流分析;3)用户根据控制流分析结果选择source函数,缩减分析目标;4)依据控制流分析结果进行数据流分析,产生漏洞路径;5)采取静态符号执行技术过滤数据流分析的结果,过滤后剩下的部分作为找到的漏洞,警告用户并打印漏洞路径。本发明在现有的静态污点分析技术的基础上扩展了漏洞挖掘的范围,减少了漏洞挖掘的内存消耗,提高了漏洞挖掘结果的精确度,可用于安卓应用程序漏洞的挖掘和研究。
Description
技术领域
本发明属于网络与系统安全领域,具体涉及安卓应用漏洞挖掘方法,可用于由外部注入引起的安卓程序漏洞的分析和研究。
背景技术
污点传播分析是根据数据依赖关系对程序进行分析的一种技术,常用于检测二进制程序中与数据相关的漏洞,比如隐私泄露漏洞和组件劫持漏洞等。按照是否需要目标程序运行,污点传播分析可分为静态和动态两种类型。
静态污点分析方法,相对基于多次执行的动态污点分析,只需要执行一次就可以得到整体分析结果,具有分析路径更全面和效率更高的优点。其分析过程主要利用了控制流分析和数据流分析技术,其中:
控制流分析,是针对程序控制流的静态分析技术,先根据程序执行方向将代码解析成一个有向图G=(B,E),其中B是基本程序语句构成的节点集合{B1,B2,…,Bn},E是有向边集合{(Bi,Bj),(Bk,Bl),…},其中边(Bi,Bj)表示在某个执行序列中Bj位于Bi之后;然后通过对图连通性质的研究来提取代码中的可达路径以及路径之上的约束求解。
数据流分析,其过程是从程序代码中收集程序的语义信息,并通过代数的方法确定程序中变量的定义和使用情况。优势是可以不必实际运行程序就能够发现程序数据方面的特性,并发现其中存在的问题。
静态污点分析方法的检测目标包括,污染源函数source函数和陷入函数sink函数这两种函数,其中:
污染源函数source,是数据流记录的起点,在执行路径上所有与source存在数据依赖关系的变量都将被标记为污染数据;
陷入函数sink,是数据流记录的终点,如果有污染数据进入sink就可认为存在安全隐患。
对于安卓程序的静态污点分析大多数应用于研究领域。已知的静态的污点分析系统多用于检测程序的隐私泄露,却不适用于挖掘程序漏洞。以目前最为精确的安卓程序静态污点分析系统FlowDroid为例,其执行流程如图1所示,当把其用于对安卓程序漏洞进行挖掘时会十分乏力,主要存在以下缺陷:
1.当前的静态污点分析系统为了追求自动化,极少为用户提供自定义接口,其分析的目标一般由安全机构硬编码到分析系统中,是固定的分析起点和终点集合,限制了漏洞分析的范围。
2.当前的静态分析系统执行时会分析整个程序的所有数据流,其中包含着大量与用户意愿不一致的数据流目标。相对于一个程序控制流的数量,数据流往往会多出数倍,并且由于语言特性,其分析过程也相当复杂,所以冗余的数据流分析会直接造成静态污点分析巨大的内存消耗和时间花费。
3.由于静态污点分析具备“一次性全面分析”的理论特性,其分析过程是“路径不敏感”的,即分析过程中遇到条件分支语句,无法辨别程序走向,只能全路径分析,如果不引入新的技术进行优化,这会导致最终分析结果可能产生误报,例如可能会报出一条污染路径,但是在程序的执行中,该路径会因为条件语句的控制而完全不可达。
发明内容
本发明的目的在于针对传统的安卓程序静态污点分析过程中的缺陷,提出一种基于静态污点分析和符号执行的安卓应用漏洞挖掘方法,以扩展静态污点分析系统对漏洞挖掘类型的范围和针对性,减少静态污点分析挖掘漏洞过程中的内存和时间消耗,提高漏洞挖掘结果的精确度。
为实现上述目的,本发明的技术方案包括如下:
1)配置分析目标并解析源码:
1a)构造两个链表结构,分别用来保存用户定义在配置文件中的污染源函数source和陷入函数sink;
1b)输入安卓程序源码,调用开源java语义分析工具soot对二进制源码进行逆向拆解,输出可读的中间语言代码存储在内存中;
2)控制流分析:
2a)调用java开源分析工具soot,输入步骤1b)生成的中间语言代码,输出函数内控制流图CFG到内存中;
2b)遍历步骤2a)生成的控制流图CFG,收集其中的函数调用语句,从这些函数调用语句中直接提取出函数调用关系,用这些函数调用关系的集合作为函数调用图CG,利用该调用图CG与2a)生成的控制流图CFG共同构成过程间控制流图ICFG;
2c)构造一个无参数的空函数D,把过程间控制流图ICFG中所有的入口都加入D函数中,使D成为过程间控制流图ICFG的总入口;
3)用户确认source函数:
3a)构造一个函数集合M,从2d)中的D函数开始,遍历过程间控制流图ICFG,并将遍历过程中遇到的全部函数加入集合M中;
3b)从3a)得到的函数集合M中寻找source函数,将source函数在程序中的位置写入文本文件中,并输出给用户;
3c)用户对3b)的文本文件进行选择,系统根据选择结果更新记录source函数的链表;
4)数据流分析:
4a)以3)中的D函数为起点,遍历过程间控制流图ICFG,每次提取图中的一个节点;
4b)对4a)提取的节点进行判断,当提取到的节点包含source函数时,记录该语句节点上的变量为污染数据;
4c)对4a)提取的节点进行判断,当提取到的节点不包含source函数或sink函数时,调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据污染传递;
4d)对4a)提取的节点进行判断,当提取到的节点包含sink函数的时,检查污染数据是否在当前的sink函数中,若是,则以当前sink函数为终点生成一条污染路径;
4e)遍历完过程间控制流图ICFG后,结束数据流分析,并生成污染路径集合来记录4d)生成的所有污染路径;
5)静态符号执行:
5a)遍历4e)中生成的污染路径集合,每次读取一条污染路径L;
5b)记录污染路径L中分支语句的条件表达式,并用字母符号替换条件表达式中的变量,生成符号表达式;
5c)新建文本文件SF.smt2,按照可满足性理论2.0版本SMT2的标准格式,将5b)收集的符号表达式进行字符串拼接,并写入文本文件SF.smt2中;
5d)调用微软公司的符号约束求解器Z3求解文本文件SF.smt2中的符号表达式,若求得符号表达式无解,就将当前污染路径L从污染路径集合中删除,否则不做处理;
5e)求解完所有的污染路径后,若污染路径集合不为空,则警告用户程序存在漏洞,并且打印污染路径集合,若为空,则提示无漏洞。本发明与现有技术相比具有以下优点:
1.本发明采用配置文件设定用户需求的方式,与传统的分析系统相比,分析的目标不再是直接由权威的安全机构给出的危险函数,而是根据用户需求进行设定,可以使分析对于特定的漏洞更具有针对性,进而提高效率和漏洞分析可用性。
2.本发明将用户的选择结合到了程序分析过程的开始和中间阶段,增加了程序分析的运行效率,相对于传统的全面数据流分析过程,待分析程序被切割成了原来的一部分,极大节省了程序分析所需的内存。
3.本发明将符号执行的方法结合到安卓程序静态污点分析中,解决了静态污点分析方法自身路径不敏感问题,使分析结果更加准确。
附图说明
图1为传统的安卓程序静态污点分析工具-FlowDorid的分析流程图;
图2为本发明的实现总流程图;
图3为本发明中的控制流分析子流程图;
图4为本发明中的用户确认source函数子流程图;
图5为本发明中的数据流分析子流程图;
图6为本发明中的静态符号执行子流程图。
具体实施方式
在当今的社会中,移动智能设备的用户数量已经远远超过了主机端的用户数量,安卓手机用户又在终端用户中占绝大部分,而安卓系统框架的开源特性使得安卓手机应用一直是漏洞频现的重灾区,这严重影响到了个人信息安全和社会安全。
在当前的技术条件下,对于安卓手机应用程序的漏洞挖掘主要使用的动态分析方法,虽然准确性较高但是需要程序分析人员有丰富的安全分析经验,并且手动的动态分析会耗费大量的人力资源和时间。因此如何更高效自动地对安卓应用进行漏洞挖掘成为了信息安全领域一个亟待解决的问题。
本发明基于程序静态污点分析的理论,在开源java分析框架soot和安卓静态污点分析工具FlowDroid的基础上,增加了用户交互的过程,结合了静态符号执行的技术,针对安卓手机应用中由外部输入引起的漏洞提出了一种新的漏洞挖掘方法。下面结合附图,对本发明做进一步详细的说明。
参照图2,本发明的实施步骤如下:
步骤1,配置分析目标并解析源码。
1a)整个程序分析开始之前通过配置文件的方式设定程序的分析起点和分析终点,即设置的污染源函数source和陷入函数sink,通常将暴露在外部的函数设置为source函数,将程序内部执行关键逻辑的函数设置为sink函数,如果经过分析能得到从污染源函数source到陷入函数sink的有可达路径,则表示存在一条潜在的安全漏洞;
所述source函数与sink函数均用函数签名的方式在文本文件中表示,函数签名的表示形式为“<包名+类名+返回值+函数名+参数>”,函数签名在一个项目中唯一标识一个函数,程序读取后用链表记录在内存中,分别命名sourceList和sinkLsit。相对于图1中传统针对隐私泄露静态分析中固定分析起点的方式,用户的选择使得静态污点分析对于特定漏洞更具备针对性,分析的函数范围也可以根据用户需求而扩展;
1b)在进行程序分析时,通过程序所在的绝对路径查找被分析程序所在位置,并通过java开源分析框架soot实现对于安卓字节码程序的逆向拆解,即使用开源分析框架soot生成语法简洁的中间语言jimple的表示形式,使所有源程序的字节码变量对应到中间语言表示的新数据结构中,从而完整的表达程序的控制流信息和数据传递信息。
步骤2,控制流分析。
参照图3,本步骤的具体实现如下:
2a)调用java开源分析框架soot的控制流生成功能,即用soot对1b)中的中间语言表示形式进行转化得到函数内控制流图CFG,转化过程是将每条语句对应成一个控制流图节点Bi,并根据执行顺序在每条语句上保存其前驱节点Bp和后继节点Bs;
2b)生成调用图CG:
绝大部分程序的执行会涉及函数调用,当函数之间存在调用关系时,就需要进行函数调用关系的模拟,即解析代码中的函数调用语句,将调用函数和被调用的函数进行映射,并将映射关系用HashMap的数据结构保存在调用语句节点中,生成相应的调用图CG;
2c)将调用图CG和函数内控制流图CFG复合生成一个新的类,该类称为过程间控制流图ICFG,该图用于描述整个被分析程序的;
2d)读取安卓程序配置文件manifest.xml:
读入安卓程序的manifest.xml主配置文件,即通过提取文件中<activity>标签下的元素,获取安卓程序的组件名;
2e)根据安卓程序的组件名,从控制流图ICFG中找到对应的组件的回调函数和安卓生命周期函数,将这些函数以函数调用的形式添加到一个统一的空函数中,该函数命名为D,作为过程间控制流图ICFG的总入口点。
步骤3,用户确认source函数。
该步骤的目的是通过对程序控制流实施剪枝来精确分析对象减少内存消耗,在挖掘由外部输入引发的漏洞时,没有必要分析程序中所有的source,可以让用户根据漏洞的已知的情况来选择分析程序的一部分而非整体,这是本发明的着重优化点。
参照图4,本步骤的具体实现如下:
3a)创建可达函数集合M:
3b)从D函数开始,循环提取过程间控制流图ICFG中每个节点的后继节点:
若提取到的节点包含函数调用,则将被调函数的函数名和函数调用的位置保存在集合M中,否则,就忽略提取到的节点;
3d)从可达函数集合M中的函数取出一条函数,将该函数与1a)的sourceList链表中的source函数进行函数签名匹配:
若不匹配,就将函数从可达函数集合M中删除,否则,就保留该函数在可达函数集合M中;
3e)构造文本文件sourceSelect.txt,将可达函数集合M中的函数签名和函数位置写成字符串输出到文本文件sourceSelect.txt中;
3f)等待用户对文件sourceSelect.txt的内容进行筛选;
3g)读入用户筛选后的文件sourceSelect.txt,将其中的函数签名和函数位置取出放入ArrayList<String,String>型的链表中,并用该链表替换1a)的source函数链表sourceList;
步骤4,数据流分析。
该步骤的目标是通过标记污染数据,传递污染数据和追踪污染数据这些手段将程序执行过程中数据的传递记录下来,并分析source函数和sink函数之间是否有数据的交互关系,其主要流程是根据图的深度搜索算法在控制流图中提取语句节点,分析语句节点上的数据,对其中用户关心的数据进行污染记录。
参照图5,本步骤的具体实现如下:
4a)新建一个污点数据集合T,用来记录污点数据;
4b)以2e)中的D函数为起点,根据图的深度遍历算法遍历过程间控制流图ICFG,每次提取该控制流图ICFG中的一个节点,进行判断:
若提取到的节点包含source函数,则将该语句上所有的变量加入到污点数据集合T中,产生初始污点数据,并以每个污点数据为头节点,新建若干条污染链表TLi;由于步骤3中加入了用户的source函数选择,所以更新后的source函数链表会有大规模的缩减,标记为污点的数据也会大量减少,因此相对于传统的静态污点分析方法,本发明数据流分析过程所需的内存和时间也会大量减少;
若提取到的节点不包含source函数或sink函数,则调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据污染传递,即通过函数F将被污点数据影响的变量加入污点数据集合T,并根据污染来源在对应污染链表TLi中记录变量间的污染关系;所述F函数是工具FlowDroid中对污染传递规则的代码描述;
若提取到的语句节点包含定义的sink函数,则进一步判断sink函数是否使用了污点数据集合T中的变量:如果是,就将当前的sink函数作为尾节点添加到对应的污染链表TLi中,当前的污染链表TLi就构成了一条完整的污染路径,否则,不作处理;
4c)当4b)中过程间控制流图ICFG的遍历结束之后,数据流分析随之结束,此时收集所有的污染链表TLi构成污染路径集合。
步骤5,静态符号执行过滤。
该步骤主要是用静态符号执行的技术对静态污点分析过程产生的分析结果进行验证性过滤,以实现提高静态污点分析精确度的要求。
参照图6,本步骤的具体实现如下:
5a)遍历4c)中生成的污染路径集合,每次读取一条污染路径Li。
5b)从污染路径Li的尾节点开始逆向的查找,并以字符串形式记录污染路径中经过的if条件语句与条件变量的数据依赖,该字符串称为条件表达式;
5c)用字母符号替换条件表达式中的条件变量,构成符号表达式;
5d)将符号表达式用“与”的逻辑运算符连接起来,并按照可满足性理论2.0版本SMT2的标准添加控制命令,写入文本文件SF.smt2中;所述可满足性理论2.0版本SMT2,是用逻辑表达式进行问题描述的一种公用标准,通过使用支持SMT2标准的约束求解器可以求解按照SMT2标准描述的问题,得到该问题是否有解;
5e)调用微软公司的符号约束求解器Z3求解文本文件SF.smt2中的符号表达式,并判断返回结果:
若求得符号表达式无解,就标明该条污染路径Li是程序执行过程中不可能实现的,将当前污染路径L从污染路径集合中删除;
若求得的符号表达式有解,则保留污染路径Li在污染路径集合中;
所述Z3解析器是微软公司开发的支持SMT2标准的约束解析器,对符号执行中的符号表达式求解有良好的性能;
5f)求解完污染路径集合中所有的污染路径后,判断污染路径集合是否为空:若不为空,警告用户程序存在漏洞,并且打印污染路径集合,否则,提示用户分析结束没有找到漏洞。由于本发明增加了静态符号执行过滤的过程,相对于传统的静态污点分析方法,最终输出的漏洞警告避免了“路径不敏感”问题,精确度更高。
以上描述仅是本发明的一个具体实例,不构成对本发明的任何限制,显然对于本领域的专业人员来说,在了解本发明内容和原理后都可能在不背离本发明原理、结构的情况下进行形式和细节上的各种修正和改变,但是这些基于本发明思想的修正和改变仍在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于静态污点分析和符号执行的安卓应用漏洞挖掘方法,包括:
1)配置分析目标并解析源码:
1a)构造两个链表结构,分别用来保存用户定义在配置文件中的污染源函数source和陷入函数sink;
1b)输入安卓程序源码,调用开源java语义分析工具soot对二进制源码进行逆向拆解,输出可读的中间语言代码存储在内存中;
2)控制流分析:
2a)调用java开源分析工具soot,输入步骤1b)生成的中间语言代码,输出函数内控制流图CFG到内存中;
2b)遍历步骤2a)生成的控制流图CFG,收集其中的函数调用语句,从这些函数调用语句中直接提取出函数调用关系,用这些函数调用关系的集合作为函数调用图CG,利用该调用图CG与2a)生成的控制流图CFG共同构成过程间控制流图ICFG;
2c)构造一个无参数的空函数D,把过程间控制流图ICFG中所有的入口都加入D函数中,使D成为过程间控制流图ICFG的总入口;
3)用户确认source函数:
3a)构造一个函数集合M,从2d)中的D函数开始,遍历过程间控制流图ICFG中除首个节点外的其它节点,并将遍历过程中遇到的全部函数加入集合M中;
3b)从3a)得到的函数集合M中寻找source函数,将source函数在程序中的位置写入文本文件中,并输出给用户;
3c)用户对3b)的文本文件进行选择,系统根据选择结果更新记录source函数的链表;
4)数据流分析:
4a)以3)中的D函数为起点,遍历过程间控制流图ICFG,每次提取图中的一个节点;
4b)对4a)提取的节点进行判断,当提取到的节点包含source函数时,记录该语句节点上的变量为污染数据;
4c)对4a)提取的节点进行判断,当提取到的节点不包含source函数或sink函数时,调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据污染传递;
4d)对4a)提取的节点进行判断,当提取到的节点包含sink函数的时,检查污染数据是否在当前的sink函数中,若是,则以当前sink函数为终点生成一条污染路径;
4e)遍历完过程间控制流图ICFG后,结束数据流分析,并生成污染路径集合来记录4d)生成的所有污染路径;
5)静态符号执行:
5a)遍历4e)中生成的污染路径集合,每次读取一条污染路径L;
5b)记录污染路径L中分支语句的条件表达式,并用字母符号替换条件表达式中的变量,生成符号表达式;
5c)新建文本文件SF.smt2,按照可满足性理论2.0版本SMT2的标准格式,将5b)收集的符号表达式进行字符串拼接,并写入文本文件SF.smt2中;
5d)调用微软公司的符号约束求解器Z3求解文本文件SF.smt2中的符号表达式,若求得符号表达式无解,就将当前污染路径L从污染路径集合中删除,否则不做处理;
5e)求解完所有的污染路径后,若污染路径集合不为空,则警告用户程序存在漏洞,并且打印污染路径集合,若为空,则提示无漏洞。
2.根据权利要求1所述的方法,其特征在于,所述步骤1a)中的配置文件,是用户用来定义source函数和sink函数的文本文件,在该文件中以“<包名+类名+返回值+函数名+参数>”的形式设置source函数和sink函数。
3.根据权利要求1所述的方法,其特征在于,所述步骤2a)中的函数内控制流图CFG,是通过调用开源java语义分析工具soot实现的,其中soot输出的控制流图CFG以双向链表的形式表示,并且在控制流图CFG中每个语句节点都通过保存其前驱节点和后继节点来记录语句间的顺序关系。
4.根据权利要求1所述的方法,其特征在于,所述步骤2b)中的函数调用图CG,是通过将调用函数和被调用的函数进行映射,并将映射关系保存在调用语句节点中来实现的。
5.根据权利要求1所述的方法,其特征在于,所述步骤2c)中的函数D,是过程间控制流图ICFG的总入口,其构造过程是通过遍历过程间控制流图ICFG,并将其中的安卓生命周期函数和回调函数加入到一个新创建的无参函数中来完成的。
6.根据权利要求1所述的方法,其特征在于,所述步骤3b)中source函数在程序中的位置,是通过记录source函数调用语句所在类的类名和其所在函数的函数名来实现的。
7.根据权利要求1所述的方法,其特征在于,所述步骤3c)中系统根据用户选择的结果更新记录source函数的链表,是根据用户选择新建source函数链表,并在新的source函数链表中增加source函数位置的记录。
8.根据权利要求1所述的方法,其特征在于,所述步骤4b)中判断提取到的节点是否包含source函数,是通过匹配source函数的位置和source函数的名称来实现,其中匹配的source函数在步骤3c)更新后的source函数链表中。
9.根据权利要求1所述的方法,其特征在于,所述步骤4c)中调用开源静态污点分析工具FlowDroid中的数据流函数F进行数据的污染传递,是通过使用FlowDroid的数据流函数F中定义的污染数据传递规则来建立污染数据和被污染数据之间的映射。
10.根据权利要求1所述的方法,其特征在于,所述步骤5c)中的可满足性理论2.0版本SMT2,是用逻辑表达式进行问题描述的一种公用标准,通过使用支持SMT2标准的约束求解器可以求解按照SMT2标准描述的问题,并得到该问题是否有解。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611113164.0A CN106709356B (zh) | 2016-12-07 | 2016-12-07 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611113164.0A CN106709356B (zh) | 2016-12-07 | 2016-12-07 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106709356A CN106709356A (zh) | 2017-05-24 |
CN106709356B true CN106709356B (zh) | 2019-05-24 |
Family
ID=58936030
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611113164.0A Active CN106709356B (zh) | 2016-12-07 | 2016-12-07 | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106709356B (zh) |
Families Citing this family (35)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959920A (zh) * | 2017-05-26 | 2018-12-07 | 阿里巴巴集团控股有限公司 | 一种应用程序风险操作识别方法及装置 |
CN107341403B (zh) * | 2017-07-24 | 2020-11-27 | 北京理工大学 | 一种文件转换方法和装置 |
CN107526970B (zh) * | 2017-08-24 | 2020-05-19 | 安徽大学 | 基于动态二进制平台检测运行时程序漏洞的方法 |
CN107748716A (zh) * | 2017-09-15 | 2018-03-02 | 深圳英飞拓科技股份有限公司 | 一种程序漏洞的查找方法及终端设备 |
CN108572915A (zh) * | 2018-03-15 | 2018-09-25 | 北京邮电大学 | 一种代码缺陷检测方法及系统 |
CN110363004B (zh) * | 2018-04-10 | 2023-01-03 | 腾讯科技(深圳)有限公司 | 一种代码漏洞检测方法、装置、介质及设备 |
CN110489130B (zh) * | 2018-05-31 | 2021-01-08 | 北京数聚鑫云信息技术有限公司 | 一种基于客户端的业务数据提取方法及装置 |
CN108846282A (zh) * | 2018-06-04 | 2018-11-20 | 西安电子科技大学 | 基于静态污点分析的安卓应用程序权限泄露漏洞检测方法 |
CN110197072B (zh) * | 2018-06-04 | 2023-03-21 | 腾讯科技(深圳)有限公司 | 软件安全漏洞的发掘方法及系统、存储介质和计算机设备 |
CN109525556B (zh) * | 2018-10-18 | 2022-01-11 | 中国电力科学研究院有限公司 | 一种用于确定嵌入式系统固件中协议漏洞的轻量级方法及系统 |
CN109948338B (zh) * | 2019-03-19 | 2020-03-17 | 中南大学 | 基于静态分析的安卓应用敏感路径触发方法 |
CN110033405B (zh) * | 2019-03-20 | 2020-11-06 | 上海交通大学 | 一种基于图像处理器加速的符号执行方法及系统 |
CN110147235B (zh) * | 2019-03-29 | 2021-01-01 | 中国科学院信息工程研究所 | 一种源代码与二进制代码间的语义比对方法和装置 |
CN110059006B (zh) * | 2019-03-29 | 2020-07-07 | 北京创鑫旅程网络技术有限公司 | 代码审计方法及装置 |
CN110162963B (zh) * | 2019-04-26 | 2021-07-06 | 佛山市微风科技有限公司 | 一种识别过权应用程序的方法 |
CN111222141B (zh) * | 2019-12-31 | 2021-10-19 | 广东为辰信息科技有限公司 | 一种汽车电控单元代码漏洞分析方法和系统 |
CN111291373B (zh) * | 2020-02-03 | 2022-06-14 | 思客云(北京)软件技术有限公司 | 用于分析数据污染传播的方法、设备和计算机可读存储介质 |
CN111488579B (zh) * | 2020-03-25 | 2023-06-02 | 腾讯科技(深圳)有限公司 | 漏洞检测方法、装置、电子设备和计算机可读存储介质 |
CN111695119B (zh) * | 2020-05-13 | 2023-08-01 | 国家电网有限公司 | 一种基于细粒度静态污点分析与符号执行的web漏洞检测方法 |
WO2021226961A1 (zh) * | 2020-05-14 | 2021-11-18 | 深圳市欢太科技有限公司 | 应用程序安全检测方法、装置、存储介质及电子设备 |
CN111666218B (zh) * | 2020-06-08 | 2023-06-13 | 抖音视界有限公司 | 代码审计方法、装置、电子设备及介质 |
CN111865909B (zh) * | 2020-06-08 | 2021-05-28 | 西安电子科技大学 | Sgx侧信道攻击防御方法、系统、介质、程序及应用 |
CN111737150B (zh) * | 2020-07-24 | 2023-09-15 | 江西师范大学 | 面向Java EE程序SQLIA漏洞的污点分析和验证方法及装置 |
CN111723382A (zh) * | 2020-07-24 | 2020-09-29 | 江西师范大学 | 动态Android程序漏洞验证方法和装置 |
CN112100054B (zh) * | 2020-08-12 | 2021-07-20 | 北京大学 | 一种面向数据管控的程序静态分析方法和系统 |
CN114462044A (zh) * | 2021-12-30 | 2022-05-10 | 中国科学院信息工程研究所 | 一种基于污点分析的uefi固件漏洞静态检测方法及装置 |
CN114417355B (zh) * | 2022-01-07 | 2022-11-08 | 上海交通大学 | 针对工业控制系统的轻量级安全性检测系统及方法 |
CN114707152A (zh) * | 2022-02-23 | 2022-07-05 | 北京邮电大学 | 联盟链智能合约的安全漏洞检测方法及装置 |
CN115562645B (zh) * | 2022-09-29 | 2023-06-09 | 中国人民解放军国防科技大学 | 一种基于程序语义的配置故障预测方法 |
CN115292723B (zh) * | 2022-10-09 | 2023-03-24 | 支付宝(杭州)信息技术有限公司 | 一种检测侧信道漏洞的方法和装置 |
CN116431474B (zh) * | 2023-03-03 | 2023-09-12 | 北京交通大学 | 一种基于静态分析的程序源码的安全配置项约束提取方法 |
CN116069675B (zh) * | 2023-04-07 | 2024-01-05 | 中国工商银行股份有限公司 | 微服务架构应用的污点分析方法及装置 |
CN116541855B (zh) * | 2023-07-06 | 2023-09-08 | 北京大学 | 跨协程运行时漏洞分析方法、装置、电子设备及存储介质 |
CN117077148B (zh) * | 2023-10-11 | 2024-01-23 | 玖目(北京)科技有限公司 | 程序的安全分析方法、系统、计算机设备及存储介质 |
CN117195241B (zh) * | 2023-11-08 | 2024-02-02 | 蔚来汽车科技(安徽)有限公司 | 固件漏洞的检测方法、设备和介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968766A (zh) * | 2010-10-21 | 2011-02-09 | 上海交通大学 | 计算机程序实际运行时触发软件漏洞的检测系统 |
CN104536880A (zh) * | 2014-11-28 | 2015-04-22 | 南京大学 | 基于符号执行的gui程序测试用例扩增方法 |
CN104899147A (zh) * | 2015-06-19 | 2015-09-09 | 北京理工大学 | 一种面向安全检查的代码静态分析方法 |
CN105787305A (zh) * | 2016-02-26 | 2016-07-20 | 西北大学 | 一种抵抗符号执行和污点分析的软件保护方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100223599A1 (en) * | 2009-02-27 | 2010-09-02 | Fujitsu Limited | Efficient symbolic execution of software using static analysis |
-
2016
- 2016-12-07 CN CN201611113164.0A patent/CN106709356B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101968766A (zh) * | 2010-10-21 | 2011-02-09 | 上海交通大学 | 计算机程序实际运行时触发软件漏洞的检测系统 |
CN104536880A (zh) * | 2014-11-28 | 2015-04-22 | 南京大学 | 基于符号执行的gui程序测试用例扩增方法 |
CN104899147A (zh) * | 2015-06-19 | 2015-09-09 | 北京理工大学 | 一种面向安全检查的代码静态分析方法 |
CN105787305A (zh) * | 2016-02-26 | 2016-07-20 | 西北大学 | 一种抵抗符号执行和污点分析的软件保护方法 |
Non-Patent Citations (4)
Title |
---|
Automated Security Analysis of DynamicWeb Applications;Giovanni Agosta,et al.;《2012 Ninth International Conference on Information Technology-New Generations》;20160601;第189-194页 |
基于SMT求解器的路径敏感程序验证;何炎祥 等;《软件学报》;20121015;第23卷(第10期);第2656-2664页 |
基于污点分析和符号执行的漏洞签名生成方法;辛伟 等;《清华大学学报(自然科学版)》;20160115;第56卷(第1期);第28-34页 |
基于符号执行的软件静态测试研究;梁娟娟 等;《计算机技术与发展》;20130305;第23卷(第6期);第42-45,178页 |
Also Published As
Publication number | Publication date |
---|---|
CN106709356A (zh) | 2017-05-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106709356B (zh) | 基于静态污点分析和符号执行的安卓应用漏洞挖掘方法 | |
CN102819492B (zh) | 一种基于Android的关键字驱动自动化测试框架 | |
CN109657473B (zh) | 一种基于深度特征的细粒度漏洞检测方法 | |
CN109739494B (zh) | 一种基于Tree-LSTM的API使用代码生成式推荐方法 | |
CN104317589B (zh) | 一种用于加载动态链接库的代码自动生成方法及装置 | |
CN105550594A (zh) | 安卓应用文件的安全性检测方法 | |
CN103970845B (zh) | 基于程序切片技术的网页过滤方法 | |
CN101377759A (zh) | 自动化界面测试系统 | |
CN101916225A (zh) | 图形用户界面软件功能覆盖测试方法 | |
CN102043716A (zh) | 基于业务驱动的软件自动化测试方法 | |
CN110673854A (zh) | Sas语言编译方法、装置、设备及可读存储介质 | |
CN103914379B (zh) | 故障自动注入与故障检测的方法及其系统 | |
Malloy et al. | An empirical analysis of the transition from python 2 to python 3 | |
CN110162457A (zh) | 用户界面的测试方法、装置、设备及存储介质 | |
US20210365258A1 (en) | Method and system for updating legacy software | |
CN100401266C (zh) | 一种数据编解码方法及其编解码器 | |
Aman et al. | Empirical analysis of change-proneness in methods having local variables with long names and comments | |
CN103714290A (zh) | 一种软件行为获取、监控与验证方法 | |
US10157057B2 (en) | Method and apparatus of segment flow trace analysis | |
CN110059006A (zh) | 代码审计方法及装置 | |
CN103544298A (zh) | 组件的日志分析方法和分析装置 | |
CN103200203B (zh) | 基于执行轨迹的语义级协议格式推断方法 | |
Fauzi et al. | Reverse engineering of source code to sequence diagram using abstract syntax tree | |
CN109902487A (zh) | 基于应用行为的Android应用恶意性检测方法 | |
CN101201750B (zh) | 利用语法词法分析工具为编解码提供数据的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |