软件缺陷举例 软件缺陷有哪些类型
发布日期:2020-11-19摘要:软件错误与软件缺陷区别 软件错误:软件生存期内的人为错误,导致软件缺陷产生。是人为过程,相对于软件本身是外部行为。软件缺陷:存在于软件(文档、数据、程序)中的偏差,导致软件在某个特定条件下出现故障,这...
软件错误与软件缺陷区别
软件错误:软件生存期内的人为错误,导致软件缺陷产生。
是人为过程,相对于软件本身是外部行为。
软件缺陷:存在于软件(文档、数据、程序)中的偏差,导致软件在某个特定条件下出现故障,这时称软件缺陷被激活。
软件故障:软件运行过程中出现的不希望或不可接收的内部状态。
是动态行为。
软件失效:软件运行时产生的不希望或不可接受的外部行为结果。
综上:软件错误是一种人为错误。
一个软件错误必定产生一个或多个软件缺陷。
当一个软件缺陷被激活时,便产生一个软件故障;同一个软件缺陷在不同条件下被激活,可能产生不同的软件故障。
软件故障如果没有集市的容错措施加以处理,便不可避免地导致软件失效;同一个软件故障在不同条件下可能产生不同的软件失效。
什么是优点缺点弱点请举例子
软件缺陷缺陷状态(Status)1.Sumitted:已提交的缺陷2.Open:确认“提交的缺陷”,等待处理3.Rejected:拒绝“提交的缺陷”,不需要修复或不是缺陷4.Resolved:缺陷被修复5.Closed:确认被修复的缺陷,将其关闭软件缺陷缺陷起源(Oigin)1.Requiement:在需求阶段发现的缺陷2.Achitectue:在构架阶段发现的缺陷3.Design:在设计阶段发现的缺陷4.Code:在编码阶段发现的缺陷5.Test:在测试阶段发现的缺陷软件缺陷缺陷来源(Souce)1.Requiement:由于需求的问题引起的缺陷2.Achitectue:由于构架的问题引起的缺陷3.Design:由于设计的问题引起的缺陷4.Code:由于编码的问题引起的缺陷5.Test:由于测试的问题引起的缺陷6.Integation:由于集成的问题引起的缺陷软件缺陷级别编辑一旦发现软件缺陷,就要设法找到引起这个缺陷的原因,分析对产品质量的影响,然后确定软件缺陷的严重性和处理这个缺陷的优先级
软件缺陷有哪些表现
常见的软件缺陷有以下四种:第一,栈溢出。
就是在栈中申请一段内存,一般是数组或字符串,在对这段内存做操作的时候,错误的写操作可能导致栈中也特殊意义的地址被用户的输入内容所控制。
最早发现是一些字符串操作的函数中,比如strcat,后来又发现在Strncpy如果不正常操作的话也会出现这个问题。
最后有一个Windows UNicode处理的函数如果不正常使用也会出现这样的问题。
下面介绍的是整数溢出的问题。
整数溢出是多发于的情况,特别是一些加、乘的操作出现在内存前面就要特别注意了。
加或者乘出来的数不一定比原先两个数大。
还有一个正负数比较的问题,或者是符号扩展的问题。
即使现在这个问题仍存在于很多软件中。
但是在很多流行软件中已经很少出现了,比如微软的软件、国外大公司的软件。
但是在国内软件这个问题依然是很多的。
这个问题在JAVA软件中也经常存在。
例如银行系统,系统错误处理,把别人帐号上扣掉的金额,一个正的金额加到你的帐号上。
第二, heap overflow。
这是现代程序C语言主要申请分配方法,所以他比栈溢出比例大的多。
微软做了很多防护措施,所以它利用起来是非常复杂的。
尤其是 WindowsXP2之后的版本,比如vista。
堆管理主要利用两张表,freelist、lookaside,freelist[0]代表着一些不规则的可以利用的chunk,尤其是比较大的chunk。
freelist[1] - freelist[n]代表2的整数次方可以利用的堆中的chunk。
利用这样堆溢出的问题,你需要对Windows堆管理非常熟悉。
比如有人通过 freelist[0]这个链表成功利用。
目前有一个immdbg的程序对这种研究利用是很有帮助的。
因为他把堆分配的内容都可以显示出来。
对vista 软件的攻击,理论上应该是不存在的。
因为vista对堆管理有严格控制,但是有很多软件使用自己的内存管理方法,比如OFFICE,他们自己堆管理方法和内存方法是和vista不一样的,这些方法往往采用教科书的方法或者以前系统的方法,所以他们这些方法是有可能被利用起来。
第三,未初始化的问题。
栈上的问题由德国人在06年详细讨论过。
头一次压栈的时候,在栈上写需要内容,然后函数退出,导致栈顶上移,有问题的函数压栈时正好利用这段栈空间,如果函数中发现了未初始化问题,比如数组,那么其内容刚好是我们刚写入的内容的栈空间,就可能被利用。
先把堆里的大部分内容写成自己需要的内容,未初始问题发生时,比如堆里指针的内容就可能指向我们需要的内容。
目前这个问题是大量存在的,OFFICE存在了很多。
比如这个月微软补丁,excel那一个补丁里就包括很多这样的问题。
你可以对比新旧的OFFICE软件,你发现 OFFICE2007有一些新加的代码就是做初始化工作的。
第四,二次释放或者叫double free问题。
内存泄露是现代软件大敌,特别是服务器软件。
有很多程序员害怕发生这样的问题,申请内存时总是想释放它,结果释放多了几次,这样也会有安全问题。
曾经在linux上的方法很巧妙、经典,但是在目前Windows上比较难以利用。
很多软件采用自己管理内存方法,那么就很可能被利用到。
-
给我们打电话
7*24小时服务热线:1399999999
全国客服热线:400-0000-000 -
百度地图
福建省三明市 -
给我们发邮件
E-mail:[email protected]
在线沟通