常见的软件安全性缺陷和漏洞

软件的安全有很多方面的内容,主要的安全问题是由软件本身的漏洞造成的,下面介绍常见的软件安全性缺陷和漏洞。

1、缓冲区溢出

缓冲区溢出已成为软件安全的头号公敌,许多实际中的安全问题都与它有关。造成缓冲区溢出问题通常有以下两种原因。

1)设计空间的转换规则的校验问题

即缺乏对可测数据的校验,导致非法数据没有在外部输入层被检查出来并丢弃。非法数据进入接口层和实现层后,由于它超出了接口层和实现层的对应测试空间或设计空间的范围,从而引起溢出。

2)局部测试空间和设计空间不足

当合法数据进入后,由于程序实现层内对应的测试空间或设计空间不足,导致程序处理时出现溢出。

2、加密弱点

这几种加密弱点是不安全的:

1)使用不安全的加密算法。加密算法强度不够,一些加密算法甚至可以用穷举法破解。

2)加密数据时密码是由伪随机算法产生的,而产生伪随机数的方法存在缺陷,使密码很容易被破解。

3)身份验证算法存在缺陷。

4)客户机和服务器时钟未同步,给攻击者足够的时间来破解密码或修改数据。

5)未对加密数据进行签名,导致攻击者可以篡改数据。所以,对于加密进行测试时,必须针对这些可能存在的加密弱点进行测试。

3、错误处理

一般情况下,错误处理都会返回一些信息给用户,返回的出错信息可能会被恶意用户利用来进行攻击,恶意用户能够通过分析返回的错误信息知道下一步要如何做才能使攻击成功。

如果错误处理时调用了一些不该有的功能,那么错误处理的过程将被利用。错误处理属于异常空间内的处理问题,异常空间内的处理要尽量简单,使用这条原则来设计可以避免这个问题。

但错误处理往往牵涉到易用性方面的问题,如果错误处理的提示信息过于简单,用户可能会一头雾水,不知道下一步该怎么操作。所以,在考虑错误处理的安全性的同时,需要和易用性一起进行权衡。

4、权限过大

如果赋予过大的权限,就可能导致只有普通用户权限的恶意用户利用过大的权限做出危害安全的操作。

例如:没有对能操作的内容做出限制,就可能导致用户可以访问超出规定范围的其他资源。进行安全性测试时必须测试应用程序是否使用了过大的权限,重点要分析在各种情况下应该有的权限,然后检查实际中是否超出了给定的权限。权限过大问题本质上属于设计空间过大问题,所以在设计时要控制好设计空间,避免设计空间过大造成权限过大的问题。

热门相关:我是仙凡   我是仙凡   一等狂妃:邪王,请接招!   宠物小精灵之庭树   嫡嫁千金