CN102034045A - 低计算机系统资源开销的软件漏洞检测系统 - Google Patents
低计算机系统资源开销的软件漏洞检测系统 Download PDFInfo
- Publication number
- CN102034045A CN102034045A CN2010105876004A CN201010587600A CN102034045A CN 102034045 A CN102034045 A CN 102034045A CN 2010105876004 A CN2010105876004 A CN 2010105876004A CN 201010587600 A CN201010587600 A CN 201010587600A CN 102034045 A CN102034045 A CN 102034045A
- Authority
- CN
- China
- Prior art keywords
- module
- pollution
- code
- dynamic
- information
- 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
Images
Landscapes
- Stored Programmes (AREA)
- Storage Device Security (AREA)
Abstract
一种计算机技术领域的低计算机系统资源开销的软件漏洞检测系统。二进制代码动态插入模块负责在用户程序运行过程中,将用户程序的二进制代码转化为汇编代码传送给污染传播初始化模块和信息流跟踪模块;污染传播初始化模块从二进制代码动态插入模块接收用户程序的汇编代码,并将存放源数据的寄存器和内存单元信息传送给污染传播管理模块;信息流跟踪模块接收用户程序的汇编代码,提取汇编代码所使用的内存单元和寄存器信息并查询污染传播管理模块,将从污染传播管理模块得到的查询结果和汇编代码的操作码信息传入漏洞规则库。本发明降低了系统资源开销减少了在原程序代码和分析代码间频繁发生的上下文切换的次数,降低了系统资源开销。
Description
技术领域
本发明涉及的是一种计算机技术领域的检测系统,具体是一种低计算机系统资源开销的软件漏洞检测系统。
背景技术
在程序的运行过程中,信息总是在程序内部对象间传递,从而形成了信息流,给程序分析提供了一个切入点。污染分析恰是信息流分析的一种形式。在污染分析中,不可信的数据来源被认为是污染源,它们将被附上某种标签或标记来标识它们的污染状态。
动态污染传播便是在上述基础上,在程序的执行过程中按规则进行污染传播。所谓的污染传播是指:如果对象A的值直接来源于污染对象B的值,或是通过对污染对象B的值进行一些计算而获得,我们则认为污染传播发生了,对象A被污染并被附上与对象B一样的污染标记。这些标记能帮助程序分析者跟踪可疑数据,探测其是否影响系统的某些特权区域或敏感区域,从而发现软件漏洞和恶意代码的恶意行为。
因此,基于动态污染传播的软件漏洞和恶意软件检测是一种行之有效的检测大量软件漏洞和脆弱点的方法。污染信息能帮助程序分析者跟踪程序的信息流,了解和记录污染源数据对程序的影响,最终找出程序输出结果和源数据之间的关系。
常规的动态污染分析只对数据给出了两种状态:污染和未污染。这种方法只考虑了污染数据所含的值,而忽略了污染数据的其他属性,如污染数据的长度等。这将使得最终的分析结果精确度不高,无法尽可能多地发现软件漏洞和恶意代码的恶意行为。
现有的相关系统往往还有如下一种或多种缺点:(1)对程序源文件的需求、(2)高计算机系统资源开销、(3)缺乏足够的检测规则,这些缺点限制了这些系统的用途。
发明内容
本发明针对现有系统存在的上述不足,提出一种基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,通过引入“受控污染”这一新的状态,提高了程序分析的精确度,拓宽了漏洞检测的范围,通过增加无关API过滤和基本块执行技术,达到了低计算机系统资源开销的目的,使得本系统成为一种基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统。
本发明是通过以下技术方案实现的:
本发明包括:二进制代码动态插入模块、污染传播初始化模块、信息流跟踪模块、污染传播管理模块、漏洞规则库,其中:二进制代码动态插入模块负责在用户程序运行过程中,在用户程序的二进制代码中动态插入二进制代码,并将用户程序的二进制代码转化为汇编代码传送给污染传播初始化模块和信息流跟踪模块;污染传播初始化模块从二进制代码动态插入模块接收用户程序的汇编代码,并将存放源数据的寄存器和内存单元信息传送给污染传播管理模块;信息流跟踪模块从二进制代码动态插入模块接收用户程序的汇编代码,提取汇编代码所使用的内存单元和寄存器信息并查询污染传播管理模块,将从污染传播管理模块得到的查询结果和汇编代码的操作码信息传入漏洞规则库,若未从漏洞规则库处得到危险反馈,则根据汇编代码的操作码信息确定污染传播方式,并将受影响的寄存器和内存单元信息传送给污染传播管理模块,若从危险规则库得到危险反馈,则将漏洞信息传送给系统输出。
所述的二进制代码动态插入模块包括:Intel开发的动态代码插入工具Pin、自定义程序分析文件。其中:Intel开发的动态代码插入工具Pin能实现在程序运行时,在程序的任意位置插入任意二进制代码,这些插入代码使得Pin能跟踪API和系统信息、调用用户自定义程序分析文件中的分析函数,从而完成特定的程序分析。用户自定义程序分析文件完成对Pin所提供的回调函数的实现。
所述的污染传播初始化模块包括:用户程序载入后的初始受污染的内存地址空间的定位、用户程序载入后的初始受污染的寄存器的定位。
所述的信息流跟踪模块包括:指令级分析模块、API及库函数级分析模块。其中:指令级分析模块根据每条汇编指令的操作码确定相应的污染传播方式、API及库函数级分析模块根据API数据库的相应记录来直接获得其污染传播方式。
所述的API数据库包含每个常见API和库函数所涉及的计算机内存单元和寄存器的记录。
所述的污染传播管理模块包括:内存污染管理模块、寄存器污染管理模块。其中:内存污染管理模块采用链式哈希表数据结构记录受污染的内存地址空间、寄存器污染管理模块采用数组记录系统中所有寄存器的污染状态。
所述的受控污染状态的定义为:受控污染状态是这样一种状态,包含该状态的对象的值不直接来源于污染对象的值,或是对污染对象的值进行算术计算后获得,来源于污染对象的其他性质(如:长度等)。
本发明对于不会产生污染传播的API直接跳过对它的分析,从而降低系统资源开销。以基本块为单位进行执行,与以单条指令为单位执行相比,减少了在原程序代码和分析代码间频繁发生的上下文切换的次数,降低了系统资源开销。本发明能够增加考虑“受控污染”这一新的状态,添加了对污染数据的其他属性的关注,使得本系统能在更广的范围内发现软件脆弱点和漏洞,无关API过滤和基本块执行降低了本系统的运行资源和运行时间开销。
附图说明
图1系统架构示意图。
图2实施例缓存区溢出漏洞示意图。
具体实施方式
下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
如图1所示,本实施例包括:二进制代码动态插入模块、污染传播初始化模块、信息流跟踪模块、污染传播管理模块、漏洞规则库。其中:二进制代码动态插入模块负责在用户程序运行过程中,在用户程序的二进制代码中动态插入二进制代码,并将用户程序的二进制代码转化为汇编代码传送给污染传播初始化模块和信息流跟踪模块;污染传播初始化模块从二进制代码动态插入模块接收用户程序的汇编代码,并将存放源数据的寄存器和内存单元信息传送给污染传播管理模块;信息流跟踪模块从二进制代码动态插入模块接收用户程序的汇编代码,提取汇编代码所使用的内存单元和寄存器信息并查询污染传播管理模块,将从污染传播管理模块得到的查询结果和汇编代码的操作码信息传入漏洞规则库,若未从漏洞规则库处得到危险反馈,则根据汇编代码的操作码信息确定污染传播方式,并将受影响的寄存器和内存单元信息传送给污染传播管理模块,若从危险规则库得到危险反馈,则将漏洞信息传送给系统输出。
所述的二进制代码动态插入模块包括:Intel开发的动态代码插入工具Pin、自定义程序分析文件。其中:Intel开发的动态代码插入工具Pin能实现在程序运行时,在程序的任意位置插入任意二进制代码,这些插入代码使得Pin能跟踪API和系统信息、调用用户自定义程序分析文件中的分析函数,从而完成特定的程序分析。用户自定义程序分析文件完成对Pin所提供的回调函数的实现。
所述的污染传播初始化模块包括:用户程序载入后的初始受污染的内存地址空间的定位、用户程序载入后的初始受污染的寄存器的定位。
所述的信息流跟踪模块包括:指令级分析模块、API及库函数级分析模块。其中:指令级分析模块根据每条汇编指令的操作码确定相应的污染传播方式、API及库函数级分析模块根据API数据库的相应记录来直接获得其污染传播方式。
所述的API数据库包含每个常见API和库函数所涉及的计算机内存单元和寄存器的记录。
所述的污染传播管理模块包括:内存污染管理模块、寄存器污染管理模块。其中:内存污染管理模块采用链式哈希表数据结构记录受污染的内存地址空间、寄存器污染管理模块采用数组记录系统中所有寄存器的污染状态。
本实施例具体操作过程如下:
初始状态:假定源数据是不可信数据,被认为是污染数据,则在用户程序载入后,二进制代码动态插入模块首先在用户程序的二进制代码中插入分析代码或函数调用语句,以此来在程序运行时动态跟踪API和系统信息、调用用户自定义的程序分析代码,并将正在执行中的二进制指令所对应的汇编指令传送给污染传播初始化模块和信息流跟踪模块
污染传播初始化模块从二进制代码动态插入模块接收到汇编指令后,分析该汇编指令的操作数,找到源数据hello所对应的内存单元,将内存单元的信息传送给污染传播管理模块
污染传播模块接收到污染传播初始化模块的信息,在本模块所维护的计算机内存和寄存器的数据结构中,将对应的内存单元或寄存器打上污染标记信息流跟踪模块从二进制代码动态插入模块接收汇编代码,以用户程序的每个基本块为单位进行信息流跟踪,并在污染传播管理模块和漏洞规则库的协作下,检测程序漏洞。当分析到int len=strlen(strInput)时,由于strInput是污染变量,且len的值并不是由strInput直接赋值得到的,而是经过对strInput算术运算得到,因此被标记上“受控污染”标记。当分析到foo(strInput,len)时,信息流跟踪模块查询本模块内的API数据库,在发现无此API记录后,foo()函数被认为是与污染传播无关的API而被直接过滤,信息流跟踪模块进入foo函数体继续分析。当分析到lstrcpyn(buf,strInput,len)时,信息流跟踪模块查询本模块内的API数据库,在识别出库函数lstrcpyn()后从API数据库内得到lstrcpyn()在所涉及的计算机内存单元和寄存器的记录,并将该信息传入污染传播模块,查询得到相应的内存单元和寄存器的污染状态,将返回的污染状态信息和lstrcpyn()的库函数名传入漏洞规则库进行检索,发现满足其中的漏洞规则,系统输出模块发出警报,漏洞发现。
在实施例中,软件漏洞来源于语句Istrcpyn(buf,strInput,len),此语句在实际运行时会出现如下3种情况:
如果源数据较长,使得strInput的长度大于buf的长度,则在strInput中的数据复制到buf后,buf中的数据会覆盖tmp的一部分,此时虽然foo()函数调用的返回地址未被覆盖,但仍存在较轻的缓存区溢出漏洞,如图2中空心箭头所示。
如果源数据较长,使得strInput的长度大于buf的长度,则在strInput中的数据复制到buf后,buf中的数据会覆盖到foo函数调用的返回地址,此时发生严重的缓存区溢出漏洞,如图2中实心箭头所示。
如果源数据较短,使得strInput的长度小于或等于buf的长度,则在strInput中的数据复制到buf后,buf中的数据不会覆盖其他任何非buf所占的内存区域,此时虽然程序运行正常,但该程序仍存在潜在的缓存区溢出漏洞。
对于情况2),现有的基于动态污染传播的软件漏洞检测系统都能发现并发出警报,而对于其他两种情况则不能处理。本系统通过引入API数据库、漏洞规则库、受控污染状态来实现对情况1)和3)的发现和报警。具体过程为通过查询API数据库,识别出lstrcpyn()库函数,并依照API数据库中的记录查询污染传播管理模块,然后将查询得到的该库函数所涉及的内存和寄存器的污染信息传入漏洞规则库进行漏洞规则检索,从而来检测是否存在漏洞。
通过测试,本实施例考虑了“受控污染”这一新的状态,添加了对污染数据的其他属性的关注,提高了程序分析结果的精确度,并能在更广的范围内发现软件脆弱点和漏洞,无关API过滤和基本块执行降低了本系统的运行资源和运行时间开销。
Claims (6)
1.一种基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征在于,包括:二进制代码动态插入模块、污染传播初始化模块、信息流跟踪模块、污染传播管理模块、漏洞规则库,其中:二进制代码动态插入模块负责在用户程序运行过程中,在用户程序的二进制代码中动态插入二进制代码,并将用户程序的二进制代码转化为汇编代码传送给污染传播初始化模块和信息流跟踪模块;污染传播初始化模块从二进制代码动态插入模块接收用户程序的汇编代码,并将存放源数据的寄存器和内存单元信息传送给污染传播管理模块;信息流跟踪模块从二进制代码动态插入模块接收用户程序的汇编代码,提取汇编代码所使用的内存单元和寄存器信息并查询污染传播管理模块,将从污染传播管理模块得到的查询结果和汇编代码的操作码信息传入漏洞规则库,若未从漏洞规则库处得到危险反馈,则根据汇编代码的操作码信息确定污染传播方式,并将受影响的寄存器和内存单元信息传送给污染传播管理模块,若从危险规则库得到危险反馈,则将漏洞信息传送给系统输出。
2.根据权利要求1所述的基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征是,所述的二进制代码动态插入模块包括:Intel开发的动态代码插入工具Pin、自定义程序分析文件。其中:Intel开发的动态代码插入工具Pin能实现在程序运行时,在程序的任意位置插入任意二进制代码,这些插入代码使得Pin能跟踪API和系统信息、调用用户自定义程序分析文件中的分析函数,从而完成特定的程序分析。用户自定义程序分析文件完成对Pin所提供的回调函数的实现。
3.根据权利要求1所述的基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征是,所述的污染传播初始化模块包括:用户程序载入后的初始受污染的内存地址空间的定位、用户程序载入后的初始受污染的寄存器的定位。
4.根据权利要求1所述的基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征是,所述的信息流跟踪模块包括:指令级分析模块、API及库函数级分析模块。其中:指令级分析模块根据每条汇编指令的操作码确定相应的污染传播方式、API及库函数级分析模块根据API数据库的相应记录来直接获得其污染传播方式。
5.根据权利要求4所述的基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征是,所述的API数据库包含每个常见API和库函数所涉及的计算机内存单元和寄存器的记录。
6.根据权利要求1所述的基于动态污染传播的低计算机系统资源开销的软件漏洞检测系统,其特征是,所述的污染传播管理模块包括:内存污染管理模块、寄存器污染管理模块。其中:内存污染管理模块采用链式哈希表数据结构记录受污染的内存地址空间、寄存器污染管理模块采用数组记录系统中所有寄存器的污染状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105876004A CN102034045B (zh) | 2010-12-15 | 2010-12-15 | 低计算机系统资源开销的软件漏洞检测系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2010105876004A CN102034045B (zh) | 2010-12-15 | 2010-12-15 | 低计算机系统资源开销的软件漏洞检测系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102034045A true CN102034045A (zh) | 2011-04-27 |
CN102034045B CN102034045B (zh) | 2012-11-28 |
Family
ID=43886925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2010105876004A Expired - Fee Related CN102034045B (zh) | 2010-12-15 | 2010-12-15 | 低计算机系统资源开销的软件漏洞检测系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102034045B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750602A (zh) * | 2013-12-27 | 2015-07-01 | 阿里巴巴集团控股有限公司 | 一种动态污点数据分析方法及装置 |
CN105184169A (zh) * | 2015-09-14 | 2015-12-23 | 电子科技大学 | Windows操作环境下基于插桩工具的漏洞检测方法 |
CN105677426A (zh) * | 2016-01-12 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种Java代码中数据流的跟踪装置和方法 |
CN107526970A (zh) * | 2017-08-24 | 2017-12-29 | 安徽大学 | 基于动态二进制平台检测运行时程序漏洞的方法 |
CN108292353A (zh) * | 2015-11-13 | 2018-07-17 | 三星电子株式会社 | 用于保护电子设备的装置和方法 |
CN108664790A (zh) * | 2018-05-14 | 2018-10-16 | 西北工业大学 | 一种面向安全漏洞检测的多目标信息流跟踪方法 |
CN110647457A (zh) * | 2018-06-26 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 数据挖掘方法、数据处理方法和系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN101473300A (zh) * | 2006-06-23 | 2009-07-01 | 微软公司 | 通过实施数据流完整性来保护软件 |
CN101482846A (zh) * | 2008-12-25 | 2009-07-15 | 上海交通大学 | 基于可执行代码逆向分析的漏洞挖掘方法 |
CN101615238A (zh) * | 2009-07-28 | 2009-12-30 | 南京大学 | 基于二进制的内存篡改攻击的检测和漏洞定位系统 |
-
2010
- 2010-12-15 CN CN2010105876004A patent/CN102034045B/zh not_active Expired - Fee Related
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101473300A (zh) * | 2006-06-23 | 2009-07-01 | 微软公司 | 通过实施数据流完整性来保护软件 |
CN101159732A (zh) * | 2007-08-14 | 2008-04-09 | 电子科技大学 | 基于数据流分析的恶意攻击检测方法 |
CN101482846A (zh) * | 2008-12-25 | 2009-07-15 | 上海交通大学 | 基于可执行代码逆向分析的漏洞挖掘方法 |
CN101615238A (zh) * | 2009-07-28 | 2009-12-30 | 南京大学 | 基于二进制的内存篡改攻击的检测和漏洞定位系统 |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104750602A (zh) * | 2013-12-27 | 2015-07-01 | 阿里巴巴集团控股有限公司 | 一种动态污点数据分析方法及装置 |
CN105184169A (zh) * | 2015-09-14 | 2015-12-23 | 电子科技大学 | Windows操作环境下基于插桩工具的漏洞检测方法 |
CN108292353A (zh) * | 2015-11-13 | 2018-07-17 | 三星电子株式会社 | 用于保护电子设备的装置和方法 |
US11126712B2 (en) | 2015-11-13 | 2021-09-21 | Samsung Electronics Co., Ltd | Apparatus and method for protecting electronic device |
CN108292353B (zh) * | 2015-11-13 | 2023-04-07 | 三星电子株式会社 | 用于保护电子设备的装置和方法 |
CN105677426A (zh) * | 2016-01-12 | 2016-06-15 | 上海斐讯数据通信技术有限公司 | 一种Java代码中数据流的跟踪装置和方法 |
CN107526970A (zh) * | 2017-08-24 | 2017-12-29 | 安徽大学 | 基于动态二进制平台检测运行时程序漏洞的方法 |
CN107526970B (zh) * | 2017-08-24 | 2020-05-19 | 安徽大学 | 基于动态二进制平台检测运行时程序漏洞的方法 |
CN108664790A (zh) * | 2018-05-14 | 2018-10-16 | 西北工业大学 | 一种面向安全漏洞检测的多目标信息流跟踪方法 |
CN110647457A (zh) * | 2018-06-26 | 2020-01-03 | 阿里巴巴集团控股有限公司 | 数据挖掘方法、数据处理方法和系统 |
CN110647457B (zh) * | 2018-06-26 | 2023-03-28 | 阿里巴巴集团控股有限公司 | 数据挖掘方法、数据处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102034045B (zh) | 2012-11-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102034045B (zh) | 低计算机系统资源开销的软件漏洞检测系统 | |
CN109002721B (zh) | 一种信息安全漏洞的挖掘分析方法 | |
KR101083311B1 (ko) | 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법 | |
Ji et al. | Enabling refinable {Cross-Host} attack investigation with efficient data flow tagging and tracking | |
Jueckstock et al. | Visiblev8: In-browser monitoring of javascript in the wild | |
Jacobson et al. | Labeling library functions in stripped binaries | |
Canfora et al. | Acquiring and analyzing app metrics for effective mobile malware detection | |
CN116167058B (zh) | 一种基于代码疫苗的运行时漏洞分析方法及装置 | |
US20110145918A1 (en) | Sensitive data tracking using dynamic taint analysis | |
CN102567200A (zh) | 基于函数调用图的并行化安全漏洞检测方法 | |
CN104766012A (zh) | 基于动态污点追踪的数据安全动态检测方法及系统 | |
CN101853200B (zh) | 一种高效动态软件漏洞挖掘方法 | |
CN107623738B (zh) | 一种面向安卓应用的WebView桥接口污点映射及分析方法 | |
CN101968766A (zh) | 计算机程序实际运行时触发软件漏洞的检测系统 | |
CN101159732A (zh) | 基于数据流分析的恶意攻击检测方法 | |
Whelan et al. | Architecture-independent dynamic information flow tracking | |
CN113254945A (zh) | 基于污点分析的web漏洞静态检测方法、系统和介质 | |
Roessler et al. | μscope: A methodology for analyzing least-privilege compartmentalization in large software artifacts | |
Kim et al. | Avengers, Assemble! survey of WebAssembly security solutions | |
CN101458630B (zh) | 一种基于硬件模拟器的自修改代码识别方法 | |
Pattee et al. | Performance monitoring counter based intelligent malware detection and design alternatives | |
US20230281319A1 (en) | Methods, systems, and computer readable media for automatically generating compartmentalization security policies and rule prefetching acceleration for tagged processor architectures | |
CN110727598A (zh) | 基于动态污点跟踪的二进制软件脆弱性检测系统及方法 | |
Alrabaee et al. | Binary analysis overview | |
Roessler et al. | SCALPEL: Exploring the Limits of Tag-enforced Compartmentalization |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121128 Termination date: 20151215 |
|
EXPY | Termination of patent right or utility model |