CN107291617A - 一种基于隐式污点传播的漏洞分析方法 - Google Patents

一种基于隐式污点传播的漏洞分析方法 Download PDF

Info

Publication number
CN107291617A
CN107291617A CN201710451044.XA CN201710451044A CN107291617A CN 107291617 A CN107291617 A CN 107291617A CN 201710451044 A CN201710451044 A CN 201710451044A CN 107291617 A CN107291617 A CN 107291617A
Authority
CN
China
Prior art keywords
tainting
instruction
program
backtracking
stain
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
Application number
CN201710451044.XA
Other languages
English (en)
Other versions
CN107291617B (zh
Inventor
杨轶
苏璞睿
黄桦烽
和亮
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Publication of CN107291617A publication Critical patent/CN107291617A/zh
Application granted granted Critical
Publication of CN107291617B publication Critical patent/CN107291617B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3636Software debugging by tracing the execution of the program
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Quality & Reliability (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明提供一种基于隐式污点传播的漏洞分析方法,其步骤为:提取待分析程序的控制流图;计算上述控制流图中每一条指令的前后必经节点的控制依赖关系;启动上述程序并监控该程序执行的每一条指令;将监控到的该程序调用的读数据操作函数的返回值加入到污点记录中;追踪程序执行的指令,计算正向污点传播过程,直到程序出现异常或中止分析过程;如果仅有计算正向污点传播过程得到的显式污点传播路径,则从程序中存在的控制流劫持点为起点开始逆向回溯,若出现回溯中断,则采用隐式污点传播,使回溯过程能够继续进行。

Description

一种基于隐式污点传播的漏洞分析方法
技术领域
本发明涉及网络安全技术领域,尤其涉及一种基于隐式污点传播的漏洞分析方法。
背景技术
当前软件漏洞分析主要采用污点传播分析方法,但传统的污点传播通常针对于数据依赖进行分析,对于文件类漏洞分析效果较好,但无法追踪Java Script等脚本引发的浏览器漏洞,其原因是此类脚本程序通常采用解析执行,在程序逻辑上表现为输入数据产生控制依赖影响程序执行的隐式污点传播过程。因此,提高针对控制依赖的隐式污点传播分析能力十分必要。
当前基于显式污点传播的分析技术,通常使用如下几种方法:
1、拦截接收外部输入数据的函数,当数据被读入到系统中时,给数据所在的内存控件打上污点标记。
目前的显式污点传播分析方法,主要拦截操作系统中读取文件、接收网络数据、读取注册表等函数,当函数返回时,其返回值中的缓冲区即为读取到的数据,可将该缓冲区数据标记为污点。
2、拦截程序执行的每一条指令,追踪污点数据使用情况。
监控系统的执行指令主要方式是使用调试器附加到目标进程上,或者使用虚拟机从虚拟CPU层面监控程序执行的每一条指令,分析指令的操作数,如果操作数引用了污点数据,则将计算结果也标记为污点,依该规则迭代,直到程序执行完成或用户停止该分析过程。
现有软件漏洞分析中的污点传播分析方法代表性工作包括BitBlaze系统、Panda平台、DECAF平台等,这些系统主要针对于数据依赖产生的显式污点传播实现。当前浏览器大量使用Java Script技术,漏洞攻击代码使用Java Script控制内存布局、覆盖控制流转移地址,这些操作都通过脚本解析引擎对输入的脚本字符串进行解析实现,输入的脚本内容并不与程序产生直接的数据依赖关系,现有漏洞分析方法基于显式污点传播实现,只根据指令和输入数据之间的数据依赖关系展开分析,当分析脚本类漏洞时,会产生分析过程中止的情况,无法达到分析效果。
发明内容
本发明的目的是提供一种基于隐式污点传播的漏洞分析方法,通过该分析方法能够快速确定是哪些输入数据影响了漏洞的控制流劫持点,实现对脚本类程序引发的漏洞分析中控制依赖引起的污点传播过程的监控。
针对上述目的,本发明所采用的技术方案为:
一种基于隐式污点传播的漏洞分析方法,其步骤包括:
1)提取待分析程序的控制流图(CFG,Control Flow Graph);
2)计算上述控制流图中每一条指令的前后必经节点的控制依赖关系;
3)启动上述程序并监控该程序执行的每一条指令;
4)将监控到的该程序调用的读数据操作函数的返回值加入到污点记录中;
5)追踪程序执行的指令,计算正向污点传播过程,直到程序出现异常或中止分析过程;
6)如果仅有步骤5)中计算得到的显式污点传播路径,则从程序中存在的控制流劫持点为起点开始逆向回溯,若出现回溯中断,则采用隐式污点传播;所述隐式污点传播包括以下步骤:
a)确定污点在逆向回溯传播过程中出现回溯中断的指令I;
b)分析步骤2)中得到的控制依赖关系,寻找指令I所依赖的指令J;
c)将指令J作为新起点加入到回溯路径中;
d)由指令J开始继续向前回溯,直到到达原始的污点数据。
进一步地,该方法步骤还包括:当逆向回溯到达原始的污点数据时输出污点回溯结果。
更进一步地,所述污点回溯结果是指回溯得到的指令序列、回溯到达的原始输入数据。
进一步地,步骤1)中使用IDA Pro对待分析程序进行静态分析得到该程序的控制流图。
进一步地,步骤3)中所述程序在操作系统中使用调试工具或插装工具启动和监控,且启动时拦截该程序的文件读写、网络接收、注册表查询函数。
进一步地,步骤4)中所述污点是指监控到的该程序调用的文件读写、网络接收、注册表查询函数的返回值。
进一步地,步骤5)中所述正向污点传播是指分析每一条指令的源操作数和目的操作数,根据现有的显式污点传播规则进行计算,直至程序执行出现异常或中止分析过程;其中所述中止分析过程是指研究人员根据自身经验认为漏洞已经触发进而中止分析的过程。
进一步地,步骤6)中所述控制流劫持点是指程序发生异常时控制流转移的指令,且被劫持的目标地址通常是攻击者通过构造输入数据写入。
进一步地,步骤6)还包括:当通过隐式污点传播连接断开的传播过程,连接上的指令在显式污点传播路径上时,则以该指令为起点继续逆向回溯。
本发明的有益效果在于:本发明提供一种基于隐式污点传播的漏洞分析方法,通过将静态分析和动态分析结果相结合,实现对漏洞分析中控制依赖引起的污点传播过程的监控,进而解决动态污点传播方法针对脚本类程序引发的漏洞分析能力不足的问题,达到污点传播过程中对漏洞完整、准确分析的目的,且相对于现有的基于显式污点传播的漏洞分析方法,具有更高的准确度和更好的分析能力。
附图说明
图1为本发明一种基于隐式污点传播的漏洞分析方法流程图。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下文特举实施例,并配合所附图作详细说明如下。
本发明提供一种基于隐式污点传播的漏洞分析方法,其流程图如图1所示,包括以下步骤:
1)使用IDA Pro对待分析程序进行静态分析得到该程序的控制流图,计算该控制流图中每一条指令的前后必经节点的控制依赖关系,并将该控制依赖关系存入磁盘文件中;其中该文件格式可由用户自定义,能够准确描述控制依赖关系即可。
本发明采用编写IDA Pro插件的方式,从软件可执行程序的入口点开始,首先构造程序的控制流图,构造控制流图已有很成熟的算法,此处不再赘述。通过分析程序的控制流图,计算其中每一条指令的前后必经节点,根据前后必经节点的关系,确定每一条指令的控制依赖范围,其中前后必经节点的计算方法和控制依赖范围计算也基于现有的成熟算法实现。在计算得到控制依赖范围后,将节点的控制依赖关系保存到磁盘文件中。
2)启动上述程序并监控该程序执行的每一条指令;其中所述启动和监控该程序可以通过Ollydbg、Windbg等调试工具或PIN等插装工具实现。
本发明采用编写Windbg插件的方式,通过Windbg启动程序,且启动的同时拦截该程序的文件读写、网络接收、注册表查询函数,并监控程序的API调用和运行指令。
3)将监控到的该程序调用的读数据操作函数(如ReadFile、MapViewOfFile等)的返回值加入到污点记录中,即输入到程序的数据被标记为污点。
所述污点是指监控到的该程序调用的文件读写、网络接收、注册表查询函数的返回值。例如,拦截系统中的ReadFile、recv等输入函数,获取函数的返回值和传出参数,通常情况下,这些函数的返回值和传出参数标识了系统从外部得到的额外数据,将该部分数据作为污点进行标记并加入到污点记录中。
4)追踪程序执行的指令,根据现有的显式污点传播规则计算正向污点传播过程,直到程序出现异常或中止分析过程。其中所述中止分析过程是指研究人员根据自身经验认为漏洞已经触发进而中止分析的过程。
所述正向污点传播是指分析每一条指令的源操作数和目的操作数,根据现有的显式污点传播规则进行计算,直至程序执行出现异常或中止分析过程。例如,分析指令的操作数,如果操作数引用了污点,那么该指令作为污点传播指令被记录,指令执行后影响的寄存器、内存也被标记为污点。
5)针对脚本引发的漏洞,如果仅有步骤4)中根据现有的显式污点传播规则计算得到的显式污点传播路径,则从程序中存在的控制流劫持点为起点开始逆向回溯,若出现回溯中断的情况,即尚未回溯到原始的污点数据,但指令的操作数和前面的污点数据不发生关联(即指令不在显式污点传播路径上)。此时采用隐式污点传播分析方法分析漏洞,使回溯过程能够继续进行。
所述控制流劫持点是指程序发生异常时控制流转移的指令,被劫持的目标地址通常是攻击者通过构造输入数据写入。例如栈溢出漏洞,函数返回的ret指令为其控制流劫持点,则从ret指令开始逆向回溯,首先能够看到的是ret引用了堆栈中的返回地址,根据返回地址向上寻找修改了堆栈中内容的指令。
当通过隐式污点传播连接断开的传播过程,连接上的指令在显示污点传播路径上时,则以该指令为起点继续逆向回溯;当指令不在显示污点传播路径上(即出现回溯中断)时采取如下步骤:
a)确定污点在逆向回溯传播过程中不在污点传播路径上的指令,即污点逆向回溯过程中当前状态下的最后一条指令,将其设为I;
b)分析步骤1)中得到的控制依赖关系,寻找指令I所依赖的指令,将其设为J;
c)由于指令J直接影响到了指令I的赋值,将指令J作为新起点加入到逆向回溯路径中;
d)由指令J开始继续向前回溯,直到到达原始的污点数据,若出现指令不在显示污点传播路径上时则继续执行步骤a)至步骤d)。
6)当逆向回溯到达原始的污点数据时输出污点回溯结果。所述污点回溯结果是指回溯得到的指令序列、回溯到达的原始输入数据。
下面为一按照本发明方法各步骤进行漏洞分析的实施例的具体过程:
假设存在如下的脚本代码:
假设在该脚本代码中,对象B引发了程序漏洞。在程序中实际上是由于‘CREATE_OBJ’引发了对象B的创建,在显式污点传播中,输入数据的显式污点正向传播到varInput=‘CREATE_OBJ’指令为止。在显示污点传播分析中,将以控制流劫持点为起点,根据现有的显式污点传播规则,逆向计算污点传播的过程实施回溯,控制流劫持点逆向回溯到达objectB=new object()指令会中止。此时,通过采用隐式污点传播分析方法,可以知道object B=new object()指令实际控制依赖于varInput=‘CREATE_OBJ’指令,此时,回溯路径成功接上,可继续向前回溯一直达到最初输入的Java Script脚本。
本发明提出的基于隐式污点传播的漏洞分析方法,对于本领域的技术人员而言,可以根据需要自己配置所要监控的接口,从而全面分析漏洞机理。
以上实施仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明的精神和范围,本发明的保护范围应以权利要求书所述为准。

Claims (9)

1.一种基于隐式污点传播的漏洞分析方法,其步骤包括:
1)提取待分析程序的控制流图;
2)计算上述控制流图中每一条指令的前后必经节点的控制依赖关系;
3)启动上述程序并监控该程序执行的每一条指令;
4)将监控到的该程序调用的读数据操作函数的返回值加入到污点记录中;
5)追踪程序执行的指令,计算正向污点传播过程,直到程序出现异常或中止分析过程;
6)如果仅有步骤5)中计算得到的显式污点传播路径,则从程序中存在的控制流劫持点为起点开始逆向回溯,若出现回溯中断,则采用隐式污点传播;所述隐式污点传播包括以下步骤:
a)确定污点在逆向回溯传播过程中出现回溯中断的指令I;
b)分析步骤2)中得到的控制依赖关系,寻找指令I所依赖的指令J;
c)将指令J作为新起点加入到回溯路径中;
d)由指令J开始继续向前回溯,直到到达原始的污点数据。
2.如权利要求1所述的方法,其特征在于,该方法步骤还包括:当逆向回溯到达原始的污点数据时输出污点回溯结果。
3.如权利要求2所述的方法,其特征在于,所述污点回溯结果是指回溯得到的指令序列、回溯到达的原始输入数据。
4.如权利要求1所述的方法,其特征在于,步骤1)中使用IDA Pro对待分析程序进行静态分析得到该程序的控制流图。
5.如权利要求1所述的方法,其特征在于,步骤3)中所述程序在操作系统中使用调试工具或插装工具启动和监控,且启动时拦截该程序的文件读写、网络接收、注册表查询函数。
6.如权利要求1所述的方法,其特征在于,步骤4)中所述污点是指监控到的该程序调用的文件读写、网络接收、注册表查询函数的返回值。
7.如权利要求1所述的方法,其特征在于,步骤5)中所述正向污点传播是指分析每一条指令的源操作数和目的操作数,根据现有的显式污点传播规则进行计算,直至程序执行出现异常或中止分析过程;其中所述中止分析过程是指研究人员根据自身经验认为漏洞已经触发进而中止分析的过程。
8.如权利要求1所述的方法,其特征在于,步骤6)中所述控制流劫持点是指程序发生异常时控制流转移的指令,且被劫持的目标地址通常是攻击者通过构造输入数据写入。
9.如权利要求1所述的方法,其特征在于,步骤6)还包括:当通过隐式污点传播连接断开的传播过程,连接上的指令在显式污点传播路径上时,则以该指令为起点继续逆向回溯。
CN201710451044.XA 2016-12-26 2017-06-15 一种基于隐式污点传播的漏洞分析方法 Active CN107291617B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201611216511 2016-12-26
CN2016112165112 2016-12-26

Publications (2)

Publication Number Publication Date
CN107291617A true CN107291617A (zh) 2017-10-24
CN107291617B CN107291617B (zh) 2020-08-11

Family

ID=60096787

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710451044.XA Active CN107291617B (zh) 2016-12-26 2017-06-15 一种基于隐式污点传播的漏洞分析方法

Country Status (1)

Country Link
CN (1) CN107291617B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661804A (zh) * 2019-09-29 2020-01-07 南京邮电大学 一种针对防火墙的污点分析漏洞检测方法
CN111240991A (zh) * 2020-01-20 2020-06-05 重庆富民银行股份有限公司 一种抗隐式污点传播的动态污点检测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101616151A (zh) * 2009-07-31 2009-12-30 中国科学院软件研究所 一种自动化的网络攻击特征生成方法
CN102622536A (zh) * 2011-01-26 2012-08-01 中国科学院软件研究所 一种恶意代码捕获方法
US20150264065A1 (en) * 2009-12-15 2015-09-17 Intel Corporation Sensitive data tracking using dynamic taint analysis

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101616151A (zh) * 2009-07-31 2009-12-30 中国科学院软件研究所 一种自动化的网络攻击特征生成方法
US20150264065A1 (en) * 2009-12-15 2015-09-17 Intel Corporation Sensitive data tracking using dynamic taint analysis
CN102622536A (zh) * 2011-01-26 2012-08-01 中国科学院软件研究所 一种恶意代码捕获方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
刘杰 等: "污点分析中的隐式污染检测方法", 《计算机工程》 *

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110661804A (zh) * 2019-09-29 2020-01-07 南京邮电大学 一种针对防火墙的污点分析漏洞检测方法
CN111240991A (zh) * 2020-01-20 2020-06-05 重庆富民银行股份有限公司 一种抗隐式污点传播的动态污点检测方法及系统
CN111240991B (zh) * 2020-01-20 2023-03-14 重庆富民银行股份有限公司 一种抗隐式污点传播的动态污点检测方法及系统

Also Published As

Publication number Publication date
CN107291617B (zh) 2020-08-11

Similar Documents

Publication Publication Date Title
US20140059523A1 (en) Hardware-assisted program trace collection with selectable call-signature capture
CN108268371B (zh) 面向Android应用的智能模糊测试方法
CN107103240B (zh) 一种基于上下文信息的Android组件间隐私泄露行为识别方法及系统
CN104834859A (zh) 一种Android应用中恶意行为的动态检测方法
JP6047463B2 (ja) セキュリティ上の脅威を評価する評価装置及びその方法
CN104778413A (zh) 一种基于模拟攻击的软件漏洞检测方法
US20070079288A1 (en) System and method for capturing filtered execution history of executable program code
Mercaldo et al. Hey malware, i can find you!
CN106055983A (zh) 一种基于IDA通信的Android应用反调试方法
CN107102885A (zh) 利用adb方式检测安卓模拟器的方法及装置
CN105204985A (zh) 漏洞检测方法及装置
Zhao et al. {StateFuzz}: System {Call-Based}{State-Aware} Linux Driver Fuzzing
EP3195115A1 (en) Code development tool with multi-context intelligent assistance
CN110298173A (zh) 检测由软件程序的延迟循环隐藏的恶意软件
KR102013657B1 (ko) 연관된 다중 파일 정적 분석 장치
CN107291617A (zh) 一种基于隐式污点传播的漏洞分析方法
CN109948338B (zh) 基于静态分析的安卓应用敏感路径触发方法
CN111291377A (zh) 一种应用漏洞的检测方法及系统
Chen et al. Test generation for embedded executables via concolic execution in a real environment
CN107526966B (zh) 一种Android平台的复合污点传播追踪方法
US20220335135A1 (en) Vulnerability analysis and reporting for embedded systems
CN111190813B (zh) 基于自动化测试的安卓应用网络行为信息提取系统及方法
Quist et al. Reversing compiled executables for malware analysis via visualization
Wu et al. Detecting Android Inter-App Data Leakage via Compositional Concolic Walking.
CN111523118B (zh) 一种Webshell检测方法、装置、存储介质和设备

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