CN101833631B - 一种结合指针分析的软件安全漏洞动态检测方法 - Google Patents
一种结合指针分析的软件安全漏洞动态检测方法 Download PDFInfo
- Publication number
- CN101833631B CN101833631B CN201010110545XA CN201010110545A CN101833631B CN 101833631 B CN101833631 B CN 101833631B CN 201010110545X A CN201010110545X A CN 201010110545XA CN 201010110545 A CN201010110545 A CN 201010110545A CN 101833631 B CN101833631 B CN 101833631B
- Authority
- CN
- China
- Prior art keywords
- pointer
- dangerous
- software security
- analysis
- sensitive
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种软件安全漏洞动态检测方法,特别涉及一种结合指针分析的软件安全漏洞动态检测方法,属于信息安全技术领域。本发明首先识别出待检测程序中的不安全指针,然后将其表示成为胖指针,再通过运行待检测程序,不断地查看胖指针中包含的指针状态信息找到待检测程序存在的漏洞。该方法能够同时检测多种漏洞,如缓冲区溢出漏洞和悬浮指针漏洞等,同时降低系统资源的消耗。
Description
技术领域
本发明涉及一种软件安全漏洞动态检测方法,特别涉及一种结合指针分析的软件安全漏洞动态检测方法,属于信息安全技术领域。
背景技术
随着黑客攻击事件数量的不断上升,蠕虫在Internet上的泛滥,信息安全逐渐成为人们眼中的焦点。信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞,恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据。计算机软件的普遍应用带给人们越来越多的便捷,并日益影响人们的日常生活,但计算机软件中存在大量的错误及漏洞,隐藏着巨大的风险。阻止系统攻击和入侵的根本解决途径是在软件缺陷被利用之前发现并进行分析和研究。
目前已有的使用到指针技术的软件安全漏洞动态检测方法的操作步骤为:首先,把待检测程序中出现的所有指针都表示成为胖指针,即,形如:{void*,type*,void*}的三元组形式,其中type*与原指针等价,两个void*指针分别指向原指针的上界和下界;对于悬浮指针,其中左边的void*指针与原指针未发生悬浮指针错误时所指向的内容一致,而右边的void*指针指向的是原指针指向内容的下一个地址;然后在待检测程序的运行过程中,通过检测比较胖指针中的两个void*指针,来判断待检测程序中是否有缓冲区溢出漏洞和悬浮指针漏洞。
该方法的缺陷是:
需要将待检测程序中所有的指针都表示成为胖指针,因为一个胖指针通常为普通指针的3倍大小,因此该方法对系统资源的消耗是十分巨大的。
发明内容
本发明的目的是针对已有的结合指针分析进行软件安全漏洞动态检测技术存在的系统资源开销高的问题,提出一种新的结合指针分析的软件安全漏洞动态检测方法。本发明首先识别出待检测程序中的不安全的指针,然后将其表示成为胖指针,再通过运行待检测程序,不断地查看胖指针中包含的指针状态信息找到待检测程序存在的漏洞。该方法能够同时检测多种漏洞,如缓冲区溢出漏洞和悬浮指针漏洞等,同时降低系统资源的消耗。
本发明的目的是通过以下技术方案实现的。
本发明的一种结合指针分析的软件安全漏洞动态检测方法的具体操作步骤如下:
步骤一、进行指针预处理,得到全部指针的指向集
通过基于流非敏感、上下文非敏感的指针分析方法对待检测程序中的指针进行静态分析,得到全部指针的指向集;并将一个标记符号加入到参与地址运算的指针的指向集中;
所述基于流非敏感、上下文非敏感的指针分析方法包括但不限于Steensgaard算法、Andersen算法、one level flow算法,优选为Andersen算法。
步骤二、从指针指向集中识别出不安全的指针
依次对步骤一获得的指针指向集的内容进行判断,识别出不安全的指针,当出现以下四种情况,及判断其为不安全指针:
①当一个指针的指向集中包含步骤一所述的标记符号时,则认为该指针为不安全指针;
②当一个指针指向了一个存放在堆栈中的变量,即该指针指向变量的生命周期短于指向该指针的变量时,认为该指针为不安全指针;
③当发现赋值操作符左边的表达式中出现对该指针进行取内容的运算时,则认为该指针为不安全指针;
④当出现对指针进行释放或者删除的情况时,则认为该指针为不安全指针。
步骤三、将步骤二中得到的不安全指针表示成为胖指针(Fat Pointer)。
步骤四、通过对步骤三得到的胖指针中的两个附加指针的检测,判断待检测程序中是否有缓冲区溢出漏洞和悬浮指针漏洞。
有益效果
本发明首先找到待检测程序中可能出现指针漏洞的指针,然后将其表示成为胖指针,再通过在待检测程序运行过程中,不断地查看胖指针中包含的指针状态信息来检测出当前软件系统的是否存在指针漏洞。该方法能够同时检测多种漏洞,如缓冲区溢出漏洞和悬浮指针漏洞等,同时降低了系统资源消耗。
附图说明
图1为本发明关于结合指针分析的软件安全漏洞动态检测方法的一种具体实施方式的流程示意图;
具体实施方式
下面结合附图和实施例对本发明技术方案进行详细描述。
本发明的一种结合指针分析的软件安全漏洞动态检测方法的流程示意图如图1所示,具体操作步骤如下:
待检测程序如下:
int a[10];
int*p=a;
int*q=p;
*(p+11)=5;//产生缓冲区溢出漏洞
int i=10;
int*r=new(int);
r=&i;
delete r;//没有把r赋值为NULL,可能产生悬浮指针错误
*r=15;//产生悬浮指针错误
步骤一、进行指针预处理,得到全部指针的指向集。
步骤一、进行指针预处理,得到全部指针的指向集
采用Andersen算法,并将标记符号“¥”加入到参与地址运算的指针的指向集中,得到如下的指针指向集:,
q<a,p>;
p<a,¥>;
r<&i>;
步骤二、从指针指向集中识别出不安全的指针。
根据步骤一中得到的指针指向集,可以得出p和r为不安全指针。
步骤三、将步骤二中得到的不安全指针表示成为胖指针(Fat Pointer)。
指针p,其对应的胖指针表示形式为{a,p,a+10};指针r,其对应的胖指针表示形式为{null,r,null}。
步骤四、通过对步骤三得到的胖指针中的两个附加指针的检测,判断被检测程序中是否有缓冲区溢出漏洞和悬浮指针漏洞。
对于指针p,其边界为[a,a+10],程序中出现了p+11的操作(对应的解析为a+11),通过比较边界发现a+11超出了其使用边界因此判断为缓冲区溢出漏洞。对于指针r,其边界为[null,null],后面使用了*r=15的运算,超出了r的使用边界,因此r为悬浮指针漏洞。
Claims (3)
1.一种结合指针分析的软件安全漏洞动态检测方法,其特征在于:其具体操作步骤如下:
步骤一、进行指针预处理,得到全部指针的指向集
通过基于流非敏感、上下文非敏感的指针分析方法对待检测程序中的指针进行静态分析,得到全部指针的指向集;并将一个标记符号加入到参与地址运算的指针的指向集中;
步骤二、从指针指向集中识别出不安全的指针
依次对步骤一获得的指针指向集的内容进行判断,识别出不安全的指针,当出现以下四种情况时,则判断其为不安全指针:
①当一个指针的指向集中包含步骤一所述的标记符号时,则认为该指针为不安全指针;
②当一个指针指向了一个存放在堆栈中的变量,即该指针指向变量的生命周期短于指向该指针的变量时,认为该指针为不安全指针;
③当发现赋值操作符左边的表达式中出现对该指针进行取内容的运算时,则认为该指针为不安全指针;
④当出现对指针进行释放或者删除的情况时,则认为该指针为不安全指针;
步骤三、将步骤二中得到的不安全指针表示成为胖指针;
步骤四、通过对步骤三得到的胖指针中的两个附加指针的检测,判断待检测程序中是否有缓冲区溢出漏洞和悬浮指针漏洞。
2.如权利要求1所述的一种结合指针分析的软件安全漏洞动态检测方法,其特征在于:所述基于流非敏感、上下文非敏感的指针分析方法包括但不限于Steensgaard算法、Andersen算法、one level flow算法。
3.如权利要求1或2所述的一种结合指针分析的软件安全漏洞动态检测方法,其特征在于:所述基于流非敏感、上下文非敏感的指针分析方法,优选为Andersen算法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010110545XA CN101833631B (zh) | 2010-02-09 | 2010-02-09 | 一种结合指针分析的软件安全漏洞动态检测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010110545XA CN101833631B (zh) | 2010-02-09 | 2010-02-09 | 一种结合指针分析的软件安全漏洞动态检测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101833631A CN101833631A (zh) | 2010-09-15 |
CN101833631B true CN101833631B (zh) | 2011-04-13 |
Family
ID=42717698
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010110545XA Expired - Fee Related CN101833631B (zh) | 2010-02-09 | 2010-02-09 | 一种结合指针分析的软件安全漏洞动态检测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101833631B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101937396B (zh) * | 2010-09-30 | 2012-07-11 | 中国科学院软件研究所 | 软件程序中变量的不安全使用的检测方法 |
CN102073825B (zh) * | 2011-01-28 | 2013-02-20 | 李清宝 | 基于路径驱动的可执行程序安全性检测方法 |
CN104657257B (zh) * | 2013-11-20 | 2017-11-17 | 华为技术有限公司 | 指针分析方法及装置 |
CN104021073B (zh) * | 2014-05-06 | 2017-02-01 | 南京大学 | 一种基于指针分析的软件漏洞检测方法 |
CN105205002B (zh) * | 2015-10-28 | 2017-09-29 | 北京理工大学 | 一种基于测试工作量的软件安全缺陷发现模型的建模方法 |
GB2547247B (en) * | 2016-02-12 | 2019-09-11 | Advanced Risc Mach Ltd | An apparatus and method for controlling use of bounded pointers |
US10416963B2 (en) * | 2017-06-19 | 2019-09-17 | Arm Limited | Bounds checking |
US10678474B1 (en) | 2018-11-30 | 2020-06-09 | Nxp B.V. | Peripheral based memory safety scheme for multi-core platforms |
CN111382427B (zh) * | 2020-01-06 | 2022-04-26 | 宁波中科天齐信息技术有限公司 | 基于变量关联规则的缓冲区溢出检测方法 |
CN116226673B (zh) * | 2023-05-05 | 2023-07-07 | 中国人民解放军国防科技大学 | 缓冲区漏洞识别模型的训练方法、漏洞检测方法及装置 |
-
2010
- 2010-02-09 CN CN201010110545XA patent/CN101833631B/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101833631A (zh) | 2010-09-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101833631B (zh) | 一种结合指针分析的软件安全漏洞动态检测方法 | |
CN103106134B (zh) | 一种性能缺陷检测方法、装置和系统 | |
EP2306357A3 (en) | Method and system for detection of previously unknown malware | |
EP1760620A3 (en) | Methods and Systems for Detection of Forged Computer Files | |
CN103312887A (zh) | 一种手机应用篡改识别系统、方法及装置 | |
CN108205615A (zh) | 一种优化可信基础组件的实现系统及其实现方法 | |
CN102930207A (zh) | 一种api日志监控方法及装置 | |
CN115292206B (zh) | 软件漏洞检测方法、装置、电子设备及存储介质 | |
CN104571896A (zh) | 指令处理方法、装置及电子设备 | |
CN103353930B (zh) | 一种防范感染式病毒感染的方法和装置 | |
CN103870752A (zh) | 一种用于检测Flash XSS漏洞的方法、装置与设备 | |
CN103886258A (zh) | 一种病毒检测方法及装置 | |
CN105718793A (zh) | 基于修改沙箱环境防止恶意代码识别沙箱的方法及系统 | |
CN105488414A (zh) | 一种防止恶意代码探测虚拟环境的方法及系统 | |
EP2306356A3 (en) | Asynchronous processing of events for malware detection | |
Peng et al. | Micro-architectural features for malware detection | |
CN103235914B (zh) | 一种云端恶意检测引擎识别方法 | |
JP2013222422A (ja) | プログラム、情報処理装置、及び情報処理方法 | |
CN104424435B (zh) | 一种获取病毒特征码的方法及装置 | |
CN104253809A (zh) | 一种检测网络中内容的方法和系统 | |
CN106845244A (zh) | 一种检测方法及装置 | |
KR101725399B1 (ko) | 호스트 레벨 기반 악성 스크립트 탐지 및 실행 방지 장치와 악성 스크립트 탐지 및 실행 방지 방법 | |
CN205139902U (zh) | 一种计算机硬件检测系统 | |
CN103488853A (zh) | 一种超效率dea模型无可行解单元超效率值的计算方法 | |
KR101421630B1 (ko) | 코드 인젝션된 악성코드 탐지 시스템 및 방법 |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110413 Termination date: 20210209 |