软件安全系统漏洞检测

上传人:仙*** 文档编号:89661619 上传时间:2022-05-13 格式:DOC 页数:42 大小:1.41MB
收藏 版权申诉 举报 下载
软件安全系统漏洞检测_第1页
第1页 / 共42页
软件安全系统漏洞检测_第2页
第2页 / 共42页
软件安全系统漏洞检测_第3页
第3页 / 共42页
资源描述:

《软件安全系统漏洞检测》由会员分享,可在线阅读,更多相关《软件安全系统漏洞检测(42页珍藏版)》请在装配图网上搜索。

1、word学年论文文献检索与专业写作常识2015-2016 第二学期题目: 软件安全漏洞检测 作者: 熊文丽 所在学院: 信息科学与工程学院 专业年级: 信息安全14-1 指导教师: 琳琳 职称: 副教授 2016年5月25 日42 / 42摘要互联网的全球性普与和开展,使得计算机网络与人们的生活严密相关,信息安全逐渐成为信息技术的核心问题,软件漏洞检测是信息安全的重要组成局部,漏洞带来的危害日益严重,恶意攻击者可以利用软件漏洞来访问未授权的资源,导致敏感数据被破坏,甚至威胁到整个信息安全系统。计算机软件安全漏洞,计算机系统的一组特性,这些特性一旦被某些恶意的主体利用,通过已授权的手段,来获取对

2、计算机资源的未授权访问,或者通过其他方法对计算机的系统造成损害。首先定义了软件漏洞和软件漏洞分析技术,在此根底上,提出了软件漏洞分析技 术体系,并对现有技术进展了分类和比照,归纳出了该领域的科学问题、技术难题和工程问题,最后展望了软件漏洞分析技术的未来开展。 关键词:软件安全,漏洞检测,信息安全ABSTRACTGlobal popularity and development of the Internet so that the puter network is closely related to peoples lives, information security has gradua

3、lly bee the core of information technology, software, information security vulnerability detection is an important part of the growing vulnerability harm, malicious attackers You can take advantage of software vulnerabilities to access unauthorized resources, resulting in destruction of sensitive da

4、ta, even a threat to the entire information security system. A set of characteristics of puter software security vulnerability of puter systems, these features once exploited by some malicious body through authorized means to gain unauthorized access to puter resources, or through other means cause

5、damage to puter systems.First, the definition of software vulnerabilities and vulnerability analysis software technology, on this basis, the proposed software vulnerability analysis technology system, and the prior art are classified and contrast, sums up the problem in the field of scientific, tech

6、nical problems and engineering problems, Finally, the prospect of future development of the software vulnerability analysis technology.Keywords: software security; vulnerability detection; information security目录1 绪论31.1 背景3国外研究现状42 软件安全漏洞概述6漏洞的定义62.2 计算机软件所面临的主要安全威胁72.3 漏洞的分类72.4 漏洞的特征72.5 常见的计算机软件安

7、全漏洞82.6 软件安全漏洞产生的原因93 软件安全漏洞检测方法10静态分析10动态检测123.3 混合检测技术134 软件漏洞分析技术15漏洞分析技术分类15软件架构分析15代码静态分析174.4 代码动态分析194.5 动静结合分析20漏洞定位205 软件漏洞分析中的关键性问题225.1 科学问题22技术难题23工程问题236 计算机软件漏洞检测技术的实践应用247 总结与未来展望25致26参考文献27附录281 绪论1.1 背景计算机技术的开展促进了信息全球化的进程,提高了计算机的普与,人类的各个领域都已经离不开计算机应用。然而,计算机软件安全漏洞对人类的生产活动是一个巨大的隐患。即使是

8、防火墙的设置,入侵检测技术和杀毒软件也不能防止计算机软件自身漏洞带来的威胁1。这些漏洞的存在直接给多数网络黑客侵入的机会,直接给计算机软件使用者带来巨大的信息安全威胁。如今计算机更新速度异常迅速,那些漏洞的出现频率也越来越高。所以,就必须不断地提升计算机软件当中的安全漏洞检测技术,这项技术成为寻找和弥补漏洞的主要方式,也是保障计算机安全、稳定运行的关键2。传统的漏洞开掘一般是安全分析人员通过阅读源代码或者对软件进展反汇编分析,在理解软件工作原理的情况下,通过手工对目标软件进展分析,从而发现软件中的安全漏洞。随着软件安全性需求的不断增强,这种手工作坊式的方法难以满足快速和准确地找出软件漏洞的要求

9、。在这种形势下,利用自动化方法或者半自动化的辅助工具发现漏洞成为研究的重点。目前利用自动化方法发现漏洞根本上可以归为两类,一类是基于软件测试中的黑盒测试原理,这类方法主要针对软件提供的接口,而不是针对软件的实现进展测试。另外一类是使用编译技术,对软件的源代码进展扫描,针对不安全的库函数使用以与存操作进展语义上的检查,从而发现安全漏洞。3上个世纪七十年代中期,美国南加州大学对操作系统保护错误的安全缺陷研究PA( Protection Analysis Project)计划是第一项与软件漏洞相关的研究,这个研究开启了对软件安全漏洞与其脆弱性方面的研究。随后,如美国的国家标准局、联邦调查局、国防部等

10、国家权力机关, Stanford、Harvard、Purdue 等著名高校以与 Microsoft、IBM 等国际性的大公司等也参加了这个研究方向。该领域不断出现创新研究成果,包括RISOS 计划、SDC渗透分析方法、Brian Marick 的软件漏洞分析、Landwher的漏洞分类以与 Purdue的COAST 实验室的计算机漏洞研究。 2003 年,美国国防部收到美国国家科学院提交的报告用于反恐中的信息技术报告。该报告评估了项目“编写更少漏洞的代码的研究,而这个研究被定义为“高迫切性和“非常困难的难度,而该项目的关键即为“软件安全漏洞测试。由此可见,软件安全的重要性和迫切性是世界的共识。

11、而这方面的研究力度也在不断加大,随后几年出现了很多令人鼓舞的成果。(1) 模型检查是一种软件安全漏洞测试形式化方法。该方法因为长期无法解决状态爆炸的问题导致无法对超过五千行的数据进展有效检测。2005 年,Bell 实验室)发布的 VeriSofl 测试软件,弥补了上述缺陷,实现了对超过五千行的 C/C+源程序的有效测试。尽管该方法存在一定的漏报率,但它见证了形式化方法取得的进展。(2) Purdue在软件漏洞检测方面一直有突出的贡献。其计算机系的CERIAS 在2005年的技术报告中提出将预测的方法和概率统计应用到软件安全中,该方法在一定程度上有希望解决软件漏洞测试中状态组合爆炸的问题。(3

12、) 2005年,Purdue教育和信息安全研究中心提出进程完整性的测试方法。这种方法在现有入侵检测方法的根底上,提出一种脆弱性检测机制。它采用系统调用的进程入侵检测方法把程序的缺陷按照错误种类分成有限的数目并得到准确解决错误种类的方法,这些方法是以组件方式产生并与目标错误种类的特性进展了严格的匹配,能够找出为多种错误种类的错误特性来保证检测方法的覆盖率。(4) 2006 年,Purdue 计算机系的 CERIAS 在技术报告中将数据挖掘与静态分析与相结合的方法用于软件漏洞检测分析工具FaultMiner 中,应用 FaultMiner 测试四个常用的软件,发现了的软件安全漏洞中有两个是新的,取

13、得了很显著的效果。与国外的研究状况相比拟,漏洞挖掘方面的研究在国起步较晚。2000 年起,国的很多高校和科研机构开始重视软件缺陷和脆弱性等方面的研究工作。取得成果并投入较大的有国防科技大学、装甲兵工程学院、解放军电子工程学院等军方院校以与大学、东南大学、中国科学技术大学、理工大学等地方院校。其局部研究是在已经公开的漏洞信息的根底上进展的并且其漏洞信息数据库也根本来自国外开放的信息安全研究机构。在软件漏洞检测领域,很多国研究者已经取得了相当的成果,朱扬勇等人将序列相似性查询技术用于软件漏洞分析中,王考杰等人提出了一种数据流相似性查询算法,在子窗口采用小波分解和系数约简。汤春蕾等人提出了一种适用于

14、数值型序列的匹配算法,利用了区间的单调趋势融合策略实现匹配算法的查询。通过分析已有软件漏洞检测方法,在数据挖掘的视角对漏洞信息加以分析使用,对漏洞数据库息进展整理形成漏洞知识库,为快速检测分析漏洞提供了前提依据。胡昌振等人在此根底上提出建立了基于序列模式挖掘的软件漏洞检测模型和方法,降低漏洞检测漏报率。与此同时,国也有一些模式匹配工具,如 FlawFinde 等,它将漏洞缺陷进展分级匹配,但是它不能对源代码和注释进展区分,误报率较高,ITS4 是基于语法分析的工具,针对FlawFinde的缺点,通过对源代码进展语法分析实现了漏洞模式的匹配。漏洞挖掘辅助工具的比拟有代表的公司有 Fortify

15、Software、Coverity Software和Mu Dynamics,它们都是 2000年以后新兴的公司。此外,微软的 Visual Studio 以与IBM 的Rational产品线也在提高漏洞分析能力。Forify 公司是2003年成立的,主要关注软件源代码安全保障和审计,产品包括静态源代码分析、动态程序跟踪分析、动态实时分析防护以与关联分析等。Coverity 公司成立于2002年,源于斯坦福计算机系实验室的MC项目,专注于软件安全分析,有着 MC、FiSC、EXE、KLEE 等著名漏洞挖掘学术成果。Mu Dynamics成立于2005 年,专注于通过错误注入测试网络服务的可用性

16、、可靠性和安全性,是目前最好的商业化错误注入工具提供商。总体来看,虽然国已经有少数的信息安全公司在发现漏洞的实践工作中取得了相当的成果,但该研究方向的理论体系和技术体系并没有真正的建立和完善起来。在软件漏洞和脆弱性方面,我国的研究根底还是比拟薄弱。42 软件安全漏洞概述2.1 漏洞的定义漏洞是软件、硬件、协议实施中的纰漏,也是系统安全层面的缺失处,让未获取授权认可的攻击方对系统探访、攻击、损害5。通常来说,安全漏洞存在于计算机的软件和硬件系统中。基于访问控制的、基于状态的和基于模糊概念的定义是三种经常可以见到的定义方式。1基于访问控制的定义 计算机系统的安全漏洞产生的原因是,通过对控制矩阵进展

17、访问,实现了主体对于对象的访问,然而对于控制矩阵的访问和计算机系统的操作有时会产生冲突,这时就比拟容易产生计算机系统安全漏洞。2基于状态的定义 通过对一些构成计算机系统的实体部件进展状态描述可以组成计算机系统,这些组成计算机系统的部件状态受到计算机系统的影响。组成计算机系统的部件状态可以分为授权状态和非授权状态两种,它们都可以从部件的初始状态通过不断的进展部件状态改变得到。针对具有漏洞的非授权状态,我们可以对其进展状态的转变,使其转变为非授权状态。对一个系统进展攻击的过程就是系统的状态从最初的授权状态,经过一系列的状态变换,达到非授权状态的过程。综合来看,针对计算机系统进展的攻击开始于系统的漏

18、洞状态。3基于模糊概念的定义 人们把针对计算机系统的管理、控制和安全策略相关的操作中存在的不足成为计算机系统安全漏洞,可以利用计算机系统的这些安全漏洞对其进展攻击,同时漏洞也包括组成计算机系统的软硬件设施和技术、程序等方面的不足。计算机系统安全漏洞是否对系统造成损害的标准是安全漏洞有没有被黑客利用,针对系统漏洞对系统进展攻击6。2.2 计算机软件所面临的主要安全威胁1) 软件质量问题计算机系统主要由硬件系统和软件系统组成,硬件系统主要是指计算计算机的键盘、鼠标等人工操作的系统,软件系统主要指的是计算机中的程序,它的主要功能是识别用户指令,并为用户提供所需服务,作为计算机系统的重要组成局部,软件

19、系统的质量对计算机的整体质量具有十分关键的影响,由于一些因素的影响,计算机软件在开发过程中难免会存在一些质量问题,这些质量问题也就是安全漏洞。目前,由软件质量问题而引发的用户信息泄露的事故不计其数,这对用户的生活造成了极大的不良影响。2) 软件跟踪随着计算机软件技术的不断提高,软件跟踪技术水平也有所上升,目前,软件跟踪技术主要可分为静态跟踪技术和动态跟踪技术两种,这两种技术都是利用跟踪软件系统中所提供的 断电中断和单步中断实现的。从性质上看,软件跟踪属于一种侵害用户隐私的不合法行为,它会窃取用户计算机软件中的源 码,并破译一些经过加密处理的程序。3) 非法复制计算机软件与硬件相比需要投入更多的

20、资金,其在开发的过程中不仅需要专业性的优秀人才,同时还需要对软件的进展维护,然而计算机软件本身具有可复制性,这就给产品的维护带来了困难,一些非法盗用软件的行为给企业带来了巨大的经济损失,同时也对用户信息造成了巨大的安全威胁,一些用户由于不清楚计算机软件正版与盗版的区别,在购置计算机的过程中往往会被一些非法盗用的卖家欺骗,最终导致其信息泄露的风险增加,非法复制软件给我国的法律、税收等造成了极大的消极影响。72.3 漏洞的分类针对代码层次将软件漏洞分为8大类型4。分别为输入验证和表示相关的漏洞、 因API 误用相关的漏洞、安全特征相关的漏洞、时间和状态相关的漏洞、错误相关的漏洞、编码质量相关的漏洞

21、、封装相关的漏洞、运行环境相关的漏洞。2.4 漏洞的特征在计算机系统中,无论是操作系统,还是在操作系统之上运行的各种软件,都存在着安全漏洞。对于操作系统来说,漏洞具有如下特征:1属于操作系统本身存在的逻辑错误 这种错误在编写操作系统时并不易被发现,但随着操作系统的推广和普遍使用,就会被逐渐发现。2此类漏洞普遍和时间严密相关 漏洞是长期存在的,操作系统使用的时间越久,被发现的漏洞就越多。漏洞一旦被发现,就会出现相应补丁来弥补,但是随之而来也会出现新的漏洞。3系统漏洞也是系统当前的一种安全状态 系统漏洞的存在并不一定会直接对系统造成损害,只有当它们被恶意的人员利用后,才会对系统与其合法用户产生不良

22、甚至严重的影响,使合法用户蒙受损失。62.5 常见的计算机软件安全漏洞计算机软件的开发是一个漫长的过程,在开发的过程中,难免会出现一些安全漏洞,这些漏洞给一些计算机黑客提供了契机,他们通过制造一些不同于正常软件的程序,并将这些程序通过安全漏洞注入用户的电脑之中,最终对用户信息造成损害,这些具有攻击性的程序通常被称作计算机病毒,有的病毒具有很长的潜伏期,刚开始很难发现,但是经过一段时间后,随着病毒的不断蔓延,严重的会导致计算机系统的崩溃。当前,大多数用户的计算机都安装了防火墙或杀毒软件,但这并不能从根本上防治病毒的入侵,主要还是应该对计算机安全漏洞进展防护。常见的计算机安全漏洞主要有NET-SN

23、MP,ZLIB,OSS 应用服务器,LIBTIFF开源软件库和GERONIMO2.0。第一种安全漏洞主要分布在NET或SNMP的协议文件中,其对文件造成的安全威胁是非常大的,第二种安全漏洞是一种经过压缩处理的数据软件库,该软件库中有一条超长的代码。第三种安全漏洞主要存在于计算机的目录中,从性质上看,第四种安全漏洞属于图像软件,该图像软件中含有读写标签,最后一种安全漏洞的攻击性是最强的,它可以随意进入到非法破译代码中,并绕过身份识别的环节,直接得到用户信息的访问资格。以上五 种计算机软件安全漏洞是比拟常见的,但是对这些安全漏洞的防护却没有得到高度重视,往往是在发生问题之后,才开始对安全漏洞进展检

24、测和修复,但是对用户信息造成的损害已经无法弥补了,因此,计算机用户应在平常的使用过程中做好计算机软件安全漏洞的检测工作。7依据软件漏洞产生原因和危险级别,常见软件漏洞类型包括有以下六种。第一种是存泄露漏洞。存泄露是常见的问题,之前分配的存不需要或无法访问时,但是却没有或者无法释放掉,导致占用存,长期积累出现存泄露问题。这种问题会导致系统运行缓慢,甚至瘫痪。第二种是格式化字符串漏洞。根据格式化字符串函数的参数提供的控制信息,将目标数据转化为字符串。如果由用户输入这些参数,那么攻击者就可以制造对自己有利的参数来控制系统等。第三种是缓冲区溢出漏洞。缓冲区溢出漏洞引起过很多严重的安全性问题,前面提到过

25、的“冲击波等蠕虫病毒就是利用缓冲区溢出漏洞对系统进展攻击和破坏的。缓冲区溢出漏洞的原理非常简单,是程序本身没有进展边界检查而引起的数组或指针的越界访问。当数据被程序读入或复制到缓冲区时,在没有检查缓冲区是否有足够空间的情况下,如果数据长度大于目标缓冲区的存储空间,就产生了缓冲区溢出问题。第四种是远程代码执行漏洞。它是可以通过网络发起的攻击,通常由不正确的系统层代码错误所导致。这类漏洞在软件测试的过程中很难被发现,攻击者常常利用这种漏洞操纵他人的电脑,这类漏洞也很容易引入蠕虫的攻击。第五种是SQL注入漏洞。可以用来获取数据库中的敏感信息或者利用数据库特性添加用户取得系统最高权限,导致信息的更改、

26、删除、窃取,甚至进一步进展恶意代码的嵌入,造成危害等。最后一种是跨站脚本漏洞。不同于SQL注入漏洞攻击数据库服务器的方式,利用跨站脚本漏洞注入的恶意代码是运行在用户电脑的浏览器中,是WEB应用程序将数据输出到网页时出现的问题,可以导致恶意数据显示在页面中,尤其是向网页容中写入恶意脚本或HTML代码,所以,跨站脚本漏洞也叫HTML注入漏洞。2.6 软件安全漏洞产生的原因软件安全漏洞的产生由多方面原因引起:1受编程设计人员的能力、经验和安全技术所限,操作系统与各种应用程序在设计中出现逻辑错误是不可防止的,程序中难免会有不足之处。而且编程人员不可能考虑到各种可能出现的情况,有些错误和漏洞就是由于疏忽

27、而引起的。2由于对程序部操作的不了解,或者是没有足够的重视,程序员总是假定程序会在任何环境中正常的运行。一旦程序员的假设得不到满足,程序部的相互作用和安全策略产生冲突时,便形成了安全漏洞。数据处理中出现的错误,例如对变量赋值比数值计算更容易出现逻辑错误。3漏洞和具体的系统环境密切相关。在不同种类的软、硬件设备中,同种设备的不同版本之间,由不同设备构成的不同系统之间,以与同种系统在不同的设置条件下,都会存在各自不同的安全漏洞问题。4漏洞问题与时间严密相关。一个系统从发布的那一天起,随着用户的使用,系统中存在漏洞会被不断地暴露出来,也会不断被相应的补丁软件修补,或在随后发布的新版系统中纠正,而在系

28、统中旧的漏洞被纠正的同时,往往也会引入一些新的漏洞和错误。因而随着时间的推移,旧的漏洞会不断消失,新的漏洞会不断出现,漏洞问题会长期存在。1, 43 软件安全漏洞检测方法如今计算机软件安全漏洞的检测技术有了一定程度的开展,目前主要有三大检测方法:静态分析、动态检测和混合检测。3.1 静态分析静态安全检测主要注重对系统部的安全性,其和漏洞之间存在许多共同的特点,这些特点本身具有一定的联系。目前对于计算机漏洞的明确划分主要分为存性漏洞和安全性漏洞。其中安全性漏洞检测主要注重对对数据流的误差,因此在很大程度上都是由错误的存形态直接形成。而存性漏洞如此对数据本身的类别和准确性更加的重视。所以,这种漏洞

29、的检查技术主要是在其存储空间当中构建相应的模型,对程序的代码进展静态扫描,对包含的关键句进展详细深入的分析。并充分结合所设置的漏洞特性和标准来进展系统的全面检测,对于语法的分析,最早都是采用静态分析法,也即是检查响应语法,并以此将系统当中的程序划分为多个不同语句,并将其直接和数据库进展有效的比照。一旦发现其中存在任何的疑问,如此直接做出自身详细和仔细的判断,最后按照相应标准进展检测的全过程。2静态检测技术的研究目标是目标程序源代码,其采用的方法主要是分析和审计,目的是判断目标程序源代码的健壮性如何,是否有可能导致程序运行不稳定或者导致程序出现重大异常的可能。静态检测技术的主要指标来源是事先研究

30、生成的规如此库,对目标程序源代码中存在的可疑模块、过程或函数在规如此库中查找匹配模型,如果找到,说明有安全隐患;否如此,还需进一步研究,如果是安全隐患就需要对规如此库进展扩大完善。手工分析和分析工具是静态检测技术两大要素,静态检测主要是对目标源代码进展分析,找出其中的安全隐患。静态分析对程序中不安全函数调用有很好的检测效果。静态检测技术的本旨是建立程序的一个状态模型规如此库,然后通过静态分析工具获取的信息,利用状态转换来进展漏洞检测。其检测技术主要包括变异语技术、类型推断、程序评注、约束解算器、元编译类型检查等。8图1 静态过程分析示意分析1变异语技术该安全漏洞检测技术主要利用的是C语言安全程

31、序编译技术,这种技术能对软件的源代码和二进制代码进展检测,从而发现其中的错误,在检测的过程中,要利用到指针算术的计算公式,对软件中的不安全因素进展转换,从而限制不安全操作的进展,它的主要作用是保证计算机使用过程中的安全。72类型推断技术 该技术与其他技术相比具有效率高、定位准确的优势。因此,在一些大型计算机软件安全漏洞的检测中比拟适用。然而,这种技术的主要缺点在于其兼容性并不强,对于一些小型软件的安全漏洞检测并不适用,采用该技术进展检测,需要对软件进展安全约束,可采用特殊的指针数据或用户直接输入数据的手段。73程序评注技术 该技术是建立在目标程序源代码的根底之上的,它采用注释的方法,不会在源代

32、码中添加新的程序,而且也不会影响程序的兼容性,从使用时间上来看,该技术在我国的应用时间并不长,它是一种全新的计算机软件安全漏洞防护技术,从组成成分上来看,该技术中包含了多种技术类型,其中主要有网络通信技术、分析技术和统计技术,从功能上看,这种技术能对非法入侵计算机软件的病毒进展实时监控,从而防止用户信息遭到破坏。74约束解算器技术 顾名思义,该技术主要利用的是对目标程序进展约束和解算来实现安全漏洞防护的目的,在实际操作的过程中,该技术对目标程序代码影响很小,这是其主要的优点,但是,这种技术的明显缺陷在于对漏洞定位的准确度不高,在检测漏洞的过程中经常会出现错误,导致程序员的工作量大幅递增,由于工

33、作量的增大,操作效率也必然会降低,最终影响到计算机软件安全漏洞防护的时效性。75元编译技术 这种技术是日常生活中比拟常用的计算机软件安全漏洞检测技术,从性质上看,其属于程序安全属性的检测技术,在监测的过程中,首先要对程序代码的安全性进展辨识,这就对程序员的综合素质提出了要求,进展监测工作的程序员必须具备专业的检测操作技能,同时还必须具备全面的程序代码知识,在确认程序代码的安全性之后,应建立科学的编译扩展,此项操作主要是为后续的建模执行提供方便,在建模工作执行完毕后,安全漏洞就能被检测出来了,该技术的主要优点是操作简单、准确度高。此外,该技术在使用的过程中不会对语言特征造成改变,有的安全漏洞检测

34、技术会造成语言特征的扩展,而这种技术却可以躲避这一缺陷,相比之下,其实用性是很高的。73.2 动态检测动态检测技术的主要原理是对目标程序运行时所使用的变量参数和申请的硬件资源空间进展监视,跟踪程序在运行中出现的异常进而确定目标程序是否存在漏洞的方法。 1非执行栈技术 存的栈区即系统栈,系统栈由系统自动维护,用于实现高级语言中的函数调用。在调用中程序的变量、函数返回地址等均保存在栈中,使得攻击者可以通过篡改程序输入数据注入恶意代码实现攻击。栈溢出攻击是当且最流行的攻击方法之一。非执行堆与数据技术和非执行栈技术类似,设置程序运行时动态分配的堆区与程序初始化时分配的数据段均为不可执行,该技术和非执行

35、栈技术结合可以更好地预防攻击事件发生。数据保护执行DEP:Data Execution Prevention就是非执行栈、堆和数据段技术的具体实现。82非执行堆与数据技术堆在运行使首先要进展初始化,对与该技术结合可以有效预防恶意代码的入侵,即对存中恶意程序运行时禁止改程序的运行,但是该方案在处理和修改安全漏洞程序过于繁琐。该技术几乎可以完全消除存中的安全漏洞,但是对无法对软件中的函数指针和参数进展检测和修改,同时存在兼容性问题。103存映射技术存映射技术是指通过使用映射代码页的方法,将代码页随机地址地映射到不同的存地址,从而防止依靠跳转地址和存覆盖开展的攻击。ASLRAddress Space

36、 Layout Randomization就是Windows 系统采用的存映射的安全保护技术。对于自定义的程序要开启ASLR也非常简单,现在许多的编译环境均增加的ALSR安全特性,如Visual Studio 2005 SP1增加了/ dynamic base Address选项。84沙盒技术沙盒技术在安全软件领域应用非常广泛,沙盒旨在创造一个运行存在潜在安全风险的应用程序的隔离环境,发现可疑行为后让程序继续运行,当发现确实是安全漏洞时才会终止。沙盒技术的实践应用流程是:让存在潜在安全风险应用程序的可疑行为在“沙盒中充分表现,沙盒会记录其每个运行特征,当危险行为所有特征暴露后,沙盒会执行回滚机

37、制,将攻击的痕迹和动作擦除,恢复系统到正常状态。85安全共享库 某些计算机运行了安全性极差的共享库就会引发软件安全漏洞。共享库的安全度高可用对攻击方的损害行为很好的防预,而安全度低的共享库如此易被损害。安全化的共享库是动态化的模式运作,在程序运作环节将多类安全度低、没安全性的函数运用予以拦截,并进展另外的测验,进而保证计算机软件整体的安全。56程序解释技术该技术主要是对某段程序执行监视的功能,并拥有对该程序进展强行检测的权限,但是该技术需要消耗大量的性能,需要进一步开发。例如程序检测器就是利用该技术原理进展设计,该设计不需要对计算机软件的核程序进展修改,仅仅需要增加一个启动代码就可以实现等。1

38、03.3 混合检测技术混合检测技术是综合利用静态检测技术和动态检测技术的检测特性,由于混合检测技术综合了静态检测技术和动态检测技术的优点,从程序源代码分析和目标程序运行状态检测两个方面着手开展工作,综合利用规如此库和动态检测规如此,根据程序动态状态检测结果和目标程序源代码静态分析结果进展程序安全隐患排查,所以混合检测技术相对静态检测技术和动态检测技术而言,检测的准确度相对较高。81测试库技术测试库技术主要用于检测软件运行中的动态存错误,Purify是应用测试库技术进展安全检测的工具之一。Purify是一个面向VC、VB或者Java开发的测试Visual C/C+和Java代码中与存有关的错误,

39、确保整个应用程序的质量和安全。采用测试库技术的漏洞检测工具主要用来检测程序在运行过程中调用动态存操作函数时由于没有对输入数据的长度进展验证,导致输入数据长度可能大于动态存函数分配的空间而导致的缓冲区溢出漏洞。通过测试发现,采用测试库技术的漏洞检测工具对其它类型的漏洞检测效果不佳。82二进制代码改编技术 采用二进制代码改变技术的漏洞检测工具通过对函数调用时通过压栈操作存入栈区的函数返回地址,以确保函数调用返回时能获取正确的返回地址而维护程序的正常流程。该类型的检测工具一般检测程序流中的CALL指令,当有CALL指令发生时,读出当前EBP的下一个存所存储的值,再函数返回时,将该值和EIP指针所指数

40、值进展对应,一样如此继续执行,否如此调用异常保护机制进展异常处理,确保程序不会执行非法操作。二进制代码改编技术对程序的二进制代码进展改编,对程序源代码无影响。该技术通过保护栈中保存的函数调用是压入的返回地址CALL指令压栈数据以确保函数调用完毕时正确返回。83异常技术 异常技术的主要实现原理是对大量程序调用栈的行为与结果进展统计形成一个检测指导标准和方法来检测程序是否受到攻击。利用异常技术的漏洞检测工具在检测指导标准的指导下对应用程序访问栈区的频次、动作类型和 结果进展统计。因此,异常技术是漏洞检测技术开展的新方向,对目前主流的漏洞攻击方法有较好的检测能力。84 软件漏洞分析技术 软件漏洞分析

41、是信息安全和软件质量保障的重要手段,分析工作的开展通常与软件生命周期严密地结合在一起:1在设计阶段,进展软件架构的安全性分析,了解软件架构中存在的安全威胁,由此发现设计错误error,以尽早消除安全隐患;2在开发阶段,进展源代码的安全性分析,了解代码自身存在的固有问题,由此发现编码缺defect以弥补编码的不足;3)在测试阶段,进展可执行代码的安全性分析,了解软件在实际运行中可能出现的安全问题,由此发现运行故障(fault,以采取相应措施补救。 漏洞分析技术多种多样,其间的界限也不清晰。4.1 漏洞分析技术分类综合考虑分析对象、漏洞形态等因素,参考已有软件分析分类方法,将软件漏洞分析划分为软件

42、架构分析技术、代码静态分析技术、代码动态分析技术、动静结合的分析技术和漏洞定位技术等5类。图2展示了软件漏洞分析的技术体系。其中,架构分析技术是对软件的架构设计进展分析,发现违反安全属性的设计错误后反响给设计人员进展修改;代码静态分析技术和代码动态分析技术的分析对象是源代码或可执行代码,分析过程中需要辅以相应的分析规如此,输出可能的安全漏洞;有时为了提高效率和准确度,需将两者结合使用;漏洞定位技术主要对是漏洞进展追踪定位等分析,由此确定漏洞的位置、可利用性等属性。上述各类技术构成一个完整的体系,能针对软件的不同形态完成漏洞的发现和分析工作。图2 软件漏洞分析技术体系4.2 软件架构分析统计发现

43、,软件中5075的问题是在设计阶段引入的,且修复本钱会随发现时间的推迟而增长。因此,在设计阶段进展软件架构分析对软件安全保障起着决定性作用,软件架构分析也提供了从更高、更抽象的层次保障软件安全性的方法。图3是软件架构分析原理图。分析时首先要对架构进展建模,同时还要对软件的安全需求或安全机制进展描述,然后检查架构模型是否满足安全需求,如不满足,需要根据相应信息重新设计架构,如此反复直至满足所有安全需求。通常,为了便于自动化检查,为软件架构和安全需求建模/描述时使用一样的标准进展构造,即得到的模型形式一样。图3 软件架构分析原理目前,国外关于软件架构安全性分析的理论和应用研究都还处在探索和开展阶段

44、,主要可以分为形式化分析和工程化分析2大类。前者主要使用形式化方法描述软件架构和安全需求,因此最终的分析结果准确、可量化,且自动化程度高,但实用性较差;后者从攻击者的角度考虑软件面临的安全问题,实用性强,但自动化程度较低。具体而言:1)形式化分析UMLsec方法通过扩展标准的统模语言(UML)来描述软件的架构和安全需求,并将它们转化为一阶逻辑公式,最终自动验证软件的架构是否满足安全需求。UMLsec能够进展自动化的分析,具有一定的实际应用价值;但建模粒度相对较粗。 软件架构模型法(SAM)使用谓词/迁移网(PrT)描述架构根本元素,使用一阶时序逻辑描述安全约束,并通过一系列形式化验证和分析方法

45、判定根本元素是否满足安全约束。SAM使用模型检查、约束求解、定理证明、可达性分析等方法,能够实现自动化,架构描述能力强;但需要复杂的形式化表示,实用性较差。DTMC方法使用离散时间Markov链描述软件架构的状态空间以反映任意时刻各组件的运行状况,而后人工输入每个组件的脆弱性指数,并以此计算出软件的安全性与影响架构安全的瓶颈。DT-MC支持层次式建模和多种分析与预测过程;但需要人工干预,安全描述能力较弱,且实用性不强。ACMF方法使用组件系统的架构描述语言描述软件架构的根本元素,同时还描述根本元素的性质以表现安全需求,最终通过体系结构模拟法分析架构的安全性。ACME的安全描述能力较强,具有一定

46、的实用价值;但分析时需要人工干预。2)工程化分析场景分析法使用场景描述与软件架构的静态结构和动态行为相关的安全属性,并采用评审会议的方式分析架构安全性。场景分析可在上下文环境中描述复杂的安全属性,不依赖于特定的架构描述语言;但需要人工评审,自动化程度低。错误用例分析法通过检查软件架构对每个错误用例用户在与软件交互过程中,对其他用户、软件等造成损失的一系列行为如何反响来判断架构是否满足安全需求。错误用例分析法提高了安全问题的可视化,并且不依赖于某种特定的架构描述语言;但需要人工评审,不能进展自动化分析。威胁建模法通过建立分层数据流图、标识软件的入口点和信任边界来描述软件架构,并通过建立威胁模型(

47、STRIDT)来展现欺骗、篡改、否认、信息泄露、拒绝服务和特权提升等6类威胁,最终使用SDLTM工具辅助完成分析。威胁建模法可以借助工具自动完成局部分析工作,实用性较强;但对于安全属性的描述能力较弱。4.3 代码静态分析代码静态分析是指在不运行软件的前提下进展的分析过程。静态分析的对象通常是源代码,也可以是可执行代码,但针对源代码分析时会获得更多的语义信息,更便于分析。使用静态分析方法,可以比拟全面地考虑执行路径的信息,因此能够发现更多的漏洞,提高命中率。图4给出了代码静态分析的原理。可以看出,整个过程包括如下环节:软件模型构造、漏洞模式提取、基于软件模型和漏洞模式的模式匹配。其中,匹配技术一

48、般是在辅助分析技术的支持下采用数据流分析、符号执行、模型检查等完成的;软件模型的构造应当与所使用的分析技术相结合,一般是从软件的设计、实现中构造出来的,如语法树AST、控制流图(CFG)、形式化规约等,通常被统称为中间表示(IR)。在建模之前,往往需要对代码进展 预处理词法语法分析等;漏洞模式提取过程也是分析标准的构造过程,根据历史漏洞的类型和特性,构建相应的漏洞模式或分析规如此。图4代码静态分析原理经过几十年的开展,各类静态分析技术已比拟成熟。目前比拟常见的静态分析技术包括词法分析、数据流分析、符号执行、模型检查、定理证明、污点传播等,具体而言:1)词法分析 词法分析只对代码进展基于文本或T

49、oken流的比照,以查找危险的函数或API。词法分析能够快速地发现软件中的危险函数,检测效率较高;但是由于其不进展语义层面的分析,因此无法发现深层次的安全问题,且漏报率和误报率较大。使用该技术的源代码漏洞扫描工具包括Checkmarx和ITS4等。2)数据流分析 数据流分析通过确定程序某点上变量的定义和取值情况来分析潜在危险点。数据流分析是许多代码静态检测技术的根底,在进展数据流分析时,通常将代码构造为抽象语法树AST和程序控制流图CFG等模型,而后通过代数方法计算变量的定义和使用,描述程序运行时行为,进而根据相应 规如此发现漏洞。数据流分析具有较强的分析能力,适合检查需要考虑控制流信息而且变

50、量属性之间的操作较为简单的问题,如存访问越界、常数传播等;但该技术分析速度低、过程间分析较为复杂、容易出错且效率低下。使用该技术的漏洞分析工具包括Converity、Kolcwork、JLint等。3)符号执行符号执行通过模拟程序执行发现安全问题,通常与约束求解技术结合使用。进展符号执行时,通常将代码构造为控制流图CFG或函数调用图(CG)以进展过程或过程间分析,而后使用符号值表示程序变量值,并模拟程序的执行来查找满足漏洞检测规如此的情况,从而发现漏洞。符号执行能够发现程序中细微的逻辑错误,是一种高效的静态漏洞分析技术;但是程序执行的可能路径随着程序规模的增大呈指数级增长,即出现“空间爆炸问题

51、,并且发现问题的能力很大程度上取决于求解工具的求解能力。使用该技术的漏洞分析工具包括PREfix、SMART和SAGA等。4)模型检查模型检查基于状态迁移系统来判断程序的安全性质。模型检查将软件构造为状态机或者有向图等抽象模型,并使用模态/时序逻辑公式等形式化的表达式来描述安全属性,而后对模型进展遍历以验证软件的这些安全属性是否满足。模型检查对于路径和状态的分析结果准确性较高,分析过程可以实现全自动化;但是由于穷举了所有可能状态,所以增加了额外的开销,特别是当数据密集度较大时,分析难度增大;此外,对时序、路径等属性,在边界处的近似处理难度也较大。使用该技术的漏洞分析工具包括MOPS、SLAM、

52、JAVAPathFinder 等。5)定理证明 定理证明将待验证问题转化为数学上的定理证明问题来判定程序是否满足特定安全属性,其中的Boole可满足性分析是目前研究的热点。定理证明方法将程序转换为逻辑公式,然后使用公理和规如此证明程序是否为一个合法的定理,从而发现其中的漏洞。定理证明使用严格的推理证明控制分析过程,是众多静态分析技术中最准确的,误报率较低;但是该技术需要大量的人工干预,自动化程度较低,对新漏洞的扩展性不高,难以广泛应用于大型程序中。使用该技术的漏洞分析工具主要包括Saturn、ESC/Java等。6)污点传播 污点传播(tainted propagation)分析通过静态跟踪不

53、可信的输入数据来发现安全漏洞。污点传播通过对不信任的输入数据进展标记,静态跟踪程序运行过程中污点数据的传播路径,发现使用污点数据的不安全方式,进而分析出由于敏感数据如字符串参数被改写而引发的输入验证类漏洞,如跨站脚本、SQL注入等。污点传播分析能够模拟攻击的整个过程;但它只适用于输入验证类漏洞的分析。Pixy是使用该技术的漏洞分析工具的典型代表。此外,Fortify SCA也具有多维污点传播分析能力。 4.4 代码动态分析 动态分析是通过运行具体程序并获取程序的输出或者部状态等信息来验证或者发现软件性质的过程,分析对象是可执行代码。使用动态方法分析漏洞,由于获取了具体的运行信息,因此分析出的漏

54、洞一般更为准确,误报率较低。代码动态分析的本质是使用构造的特定输入运行软件,出现故障通常是崩溃时即表示非法数据触发了一个可疑漏洞,图5说明了其原理。其中,软件运行环境用于控制待分析软件的运行并观察运行状态,包括软件的启动、停止、输出获取等;环境控制用于监控软件的运行;最终通过观察输出来确定相应输入是否触发了可能的漏洞,当输入数据较多时,需要对所有输出进展分析过滤,只保存与漏洞相关的信息。图5代码动态分析原理目前,动态漏洞分析技术主要包括模糊测试、智 能模糊测试和动态污点分析等,具体而言:1)模糊测试 模糊测试fuzzing通过提供非正常输入并监测运行故障来发现软件漏洞,通常包括识别目标识别待分

55、析程序的结构、历史漏洞等、识别输入确定输入向量或格式、生成模糊测试数据、执行测试数据、监视异常、确定漏洞可利用性等6个阶段。模糊测试是一种有效的动态漏洞分析技术,使用该项技术已经发现了大量的未知漏洞;但是测试数据生成的随机性导致了分析效率低下,代码覆盖的不充分性导致了漏报率偏高,测试数据的相互独立性导致了复杂漏洞难以发现。比拟著名的模糊测试工具包括SPIKE、Peach等。2)智能模糊测试 智能模糊测试smart fuzzing通常首先对待分析软件的代码进展静态分析,获取局部结构特征或语义信息,然后有针对性地设计测试数据,以此来辅助模糊测试的开展。智能模糊测试更具针对性,因此提高了分析的准确性

56、;但是静态分析的引入增加了分析的强度和难度,所以使用该技术时需要平衡效率和准确率之间的关系。Taint Scope是一款优良的智能模糊测试工具。 3)动态污点分析 动态污点分析dynamic taint analysis能够在机器指令层面对运行软件中的不可信数据进展信息流跟踪,从而发现不安全行为。分析时,首先动 态地将来自污点源taint source的数据标识为污点数据,而后通过分析软件执行的指令和操作数,按照某种传播策略跟踪和记录污点数据的传播路径;当污点数据传播到敏感操作点sink点时,即按预定的策略触发相应操作。动态污点分析已被广泛应用于漏洞分析、恶意代码分析、隐私泄露分析等领域;但通

57、常需要基于可执行代码分析技术,而可执行代码的分析面临着应用语义和类型信息缺失的问题。 BitBlaze是动态污点分析方面较为突出的工具。4.5 动静结合分析静态分析比拟全面地考虑执行路径,漏报率比动态分析低;但动态分析由于获取具体的运行信息,因此报告的漏洞更为准确,误报率较低。为发挥各自的优点,有时也将这2种技术结合起来使用。目前的动静结合漏洞分析技术主要包括3类:1)对源代码进展静态分析,发现可能的漏洞,然后构造输入数据使用动态分析验证其真实性;2)对可执行代码进展反汇编,利用对汇编代码静态分析获取的信息指导动态漏洞分析;3执行待分析软件并搜集运行信息,在汇编代码级别上指导静态漏洞分析。第一

58、类技术目前使用最为广泛,但是它只考虑到了静态分析对动态分析的指导作用,而忽略了动态分析过程中产生的运行信息的价值;第二类技术是对动态污点分析技术的改良,但是对可执行代码反汇编得到的汇编代码缺少语义信息,并且对可执行代码运行过程的跟踪难度较大;第三类技术考虑到了运行信息,较为新颖,但仍处于探索阶段。4.6 漏洞定位漏洞定位是指在代码中确定漏洞发生的位置,了解产生机理,准确评估潜在利用方式和风险等级的过程。前述的各类技术其实也包含着漏洞定位的分析:架构分析时,需要对发现的设计错误溯源,分析导致问题的软件元素和不合理结构;静态分析时,发现的可能漏洞需要进一步验证,并且现有的静态漏洞分析工具都可以生成

59、辅助分析的图形或触发路径,便于漏洞的定位、机理分析和溯源;动态分析时,需要从大量输出数据和软件运行状态信息中分析确定漏洞,如图4中的分析过滤。目前,漏洞定位技术主要在可执行代码中进展,包括动态调试、逆向分析和指令追踪等技术。1动态调试 动态调试通常用来定位漏洞和发现漏洞利用方法,分析对象是可执行代码。动态调试需要在调试器中运行软件,并观察软件的状态、存使用情况和存放器值等容来实现。调试时通过给定的输入,跟踪分析运行时堆栈、存放器状态和函数调用路径来发现触发漏洞的根源,定位漏洞。OllyDbg是一款知名的动态调试工具。2逆向分析 逆向分析时首先对可执行代码进展反汇编,获得汇编代码,然后通过扫描汇

60、编代码识别出可疑的代码序列,进而定位出漏洞。逆向分析工具的典型表是IDA Pro。3指令追踪指令追踪也是一种逆向分析技术,能够迅速定位漏洞。使用指令追踪时,首先需要正常运行软件,记录所有执行过的指令序列,然后触发漏洞,记录漏洞触发状态下执行的指令序列,最终比拟2轮执行的指令,重点逆向分析2次执行中表现不同的代码区,并动态调试和跟踪这局部代码,从而定位漏洞函数。基于动态可执行代码插桩工具PIN、Valg rind6等进展指令追踪是目前较为流行的方法。5 软件漏洞分析中的关键性问题虽然软件漏洞分析技术已取得了巨大的进展,但还存在着一些亟待解决的关键性问题。本节从科学研究、技术应用和工程实现等3个方

61、面阐述目前软件漏洞分析领域中普遍存在的问题和难题。 5.1 科学问题1)软件模型构建软件漏洞分析的对象通常是源代码或可执行代码,分析时往往需要对它们建模,即将软件转化为中间表示IR,而后在其上开展自动或半自动的分析。常见的软件模型包括树型结构和图型结构等。不同的模型适用的漏洞分析技术也不尽一样,例如,抽象语法树(AST)、控制流(CFG)等是早期漏洞分析中常用的模型,最近的研究尝试使用统一中间表示对软件的源代码和可执行代码建模。然而,由于现有的软件建模方法大多源于程序编译优化技术,因此许多中间表示并不是专门针对漏洞分析的。所以,需要深入研究面向漏洞分析的软件建模方法,使模型能够全面反映软件的属

62、性,尤其是安全特性,以提高漏洞分析的准确度。 2)漏洞模式提取漏洞模式的提取是关系到漏洞分析效果的关键因素,常见的漏洞模式包括适合类型安全分析的类型约束模式、适合危险函数调用分析的语法结构模式、适合污点传播分析的格(lattice)与不动点(fixpoint)模式等。此外,在进展模型检查时,漏洞模式被描述为模态/时序逻辑公式。但现有漏洞模式的描述粒度较粗,对漏洞性质尤其是其运行上下文的表述普遍不够全面,会引发大量误报。因此,需要进一步研究漏洞模式的提取方法,使漏洞模式能够准确反映漏洞的动静态属性,并指导漏洞发现规如此的构造,进而在确保自动化分析的前提下提高分析的准确度。3)技术极限求解与许多其

63、他研究领域类似,软件漏洞分析也存在极限问题,即在可承受的时间空间本钱围,能够发现和分析的漏洞种类与特性,漏洞分析的覆盖率、深度和精度,以与能够通过漏洞分析检验的安全属性种类和特性等。通过对现有漏洞分析技术进展归纳总结,找到技术极限与现有技术体系不足之间的关联关系,而后通过结合使用多种分析技术、规待分析软件的架构、使用限制性较强的程序设计语言等途径,发现上述极限问题的近似解决方法,也是下一步需要深入研究的方向。 5.2 技术难题1) 准确度判定为了提高漏洞分析能力,需要研究更加准确的分析方法,例如,漏洞分析所依赖的根本分析技术按照分析精度从简单的语法匹配、流不敏感分析、流敏感分析,逐步上升至路径

64、敏感的分析,这些都在不断地提高着漏洞分析的准确度和深度。但是,由于核心算法的时间空间复杂度快速提升,不可防止地会导致计算资源消耗的增加,更为严重的是,这种增加往往是几何级的,例如,路径敏感分析时会面临路径爆炸问题。因此,不断提高漏洞分析的准确判定程度,在合理的时间和资源条件下有效缓解漏洞分析精度和资源消耗之间的矛盾,是漏洞分析领域需要解决的技术难题。2) 智能化提升软件漏洞分析是一项对智力和技术水平要求都很高的工作。目前,漏洞分析领域涌现出许多方法、技术和工具,逐步摆脱了之前依靠手工经验和密集劳动的状况。但是,现有的漏洞分析技术智能水平不高,依然在很大程度上依赖于分析人员的漏洞先验知识,例如,静态分析技术大多基于历史漏洞的特征,而动态分析往往基于漏洞攻击与异常输入等知识。但相应知识的总结和提取非常困难和耗时,漏洞分析智能化提升和先验知识自动获取方面的研究是消除漏洞分析领域瓶颈的重要途径。5.3 工程问题 1)大规模软件的漏洞分析虽然软件的规模和复杂性不断增加,但现有的软件漏洞分析工具大多数仍基于单一

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!