软件测试笔记(十三)- 软件安全性测试

了解针对想象中是安全的计算机系统和数据,如何发现被黑客突破的安全缺陷。

一、了解动机

  1. 安全产品:是指产品在系统的所有者或管理员的控制下,保护用户信息的保密性、完整性、可获得性,以及处理资源的完整性和可获得性。
  2. 安全漏洞:是指产品不可行的缺陷——即使是正确地使用产品时——来防止攻击者窃取系统的用户权限、调节操作、破坏数据,或建立未授权的信任。
  3. 黑客:是指精通计算机编程和使用的人,电脑玩家。使用编程技能来获得对计算机网络或文件的非法访问的人。

黑客想活的系统访问权限的5个动机是:

  1. 挑战/成名。最简单和良性的黑客攻击是,纯粹为了挑战性的任务或在黑客同行中形成成功者的威望进而攻进一个系统。
  2. 好奇。在这种心理下,黑客不会停止在仅仅获得访问权限上。好奇是动机,黑客会在系统中找有兴趣的东西。一个软件系统可能有安全漏洞使黑客获得访问权限(处于挑战/成名的动机),但是其实安全度仍然足以阻止黑客对任何有价值数据的进一步访问。
  3. 使用/借用。黑客为了自己的目的会尝试使用系统。
  4. 恶意破坏。一想到恶意破坏,请记住3个D:丑化(Defacing),破坏(Destruction)和拒绝服务(denial of service)。丑化是改变网络的外观来展示黑客的意见和想法。破坏以删除或者修改存储在系统上的数据为表现形式。拒绝服务是组织或妨碍被黑的系统执行正常的操作。
  5. 偷窃。动机在于找出可以使用和出卖的有价值的东西。

二、威胁模式分析

威胁模式分析 :在这个过程中,目的是由评审小组查找产品特性设置方面可能会引起安全漏洞的地方。科举这些信息,小组可以选择对产品做修改,花更多的努力这几特定的功能,或者集中精力测试潜在的故障点。

威胁模型分析过程的步骤:

  1. 构建威胁模型分析小组。处理除了标准的小组成员外,小组中假如一个具有深厚软件安全背景的人至关重要。对于小组来说,重要的一点是了解他们的最初目标不是解决安全问题,而是确定安全问题。
  2. 确认价值。考虑系统所有的东西对于一个人入侵者说价值有多大。
  3. 创建一个体系结构总体图。创建体系结构图一个重要的方面是,确认在不同技术和其证明之间的信任边界(trust boundary)以及为了访问数据必须发生的授权。
  4. 分解应用程序。这是一个格式化的过程,用来确认数据所在位置以及如何通过系统。
  5. 确认威胁。一旦完全理解了所有的部分(价值、体系结构、数据),威胁模型分析小组可以转向确认威胁。
  6. 记录威胁。每个威胁都必须用文档记录,并且应进行跟踪以确保其被解决。文档是一种简单的方式,用于描述威胁、目标、攻击可能采用的方式、系统用于防御攻击有哪些反制手段。
  7. 威胁等级评定。恐怖公式(DREAD Formula):(1)潜在的损害;(2)可反复性;(3)可利用性;(4)受影响的用户;(5)可发现性。 小组可以首先计划最严重的问题进行设计和测试,然后在时间允许是继续对其他低级的威胁进行设计和测试。

三、软件安全是一项功能吗件漏洞是一个缺陷美吗/h4>

软件测试员不需要拿到一份清楚明白地定义软件安全性是如何实现的产品说明书。软件测试员也不能假设威胁模型分析是完全和准确的。测试安全缺陷是失效性测试行为。

四、了解缓冲区溢出

我们了解到 数据引用错误 ——即使用没有被正确申明和初始化的变量、常数、数组、字符串或记录引起的缺陷。

由于字符串的不正确处理引起的缓冲区溢出是目前为止最为常见的一种代码编写作物,其结果是导致安全漏洞。

五、使用安全的字符串函数

安全字符串函数(Safe String Functions):是指用强壮、完全测试过的、文档齐全的新函数集代替这些容易引起问题的函数集。

使用新函数的好处:

  1. 每个函数接收目标缓冲的长度作为输入。
  2. 函数空字符种植所有的输出的字符串,即使操作阶段了预计的结果。
  3. 所有函数返回一个NTSTATUS值,该值只有一个可能成功的代码。
  4. 每个都提供版本。

六、计算机取证

我们看待软件安全的观点是:黑客可能利用软件,发现安全漏洞,利用安全漏洞来达到访问数据或控制系统的目的。

在测试产品的安全性时,测试员应该从用户的角度考虑,以确定该项功能是否需要对数据进行隐藏或删除,使其他人看不到这些数据。

注意:用户变更时未删除的保留数据叫做 潜在数据(latent data) 。潜在数据是潜在的安全漏洞。

  1. 扇区 :当数据写到磁盘上时,是以块的方式来写的,这些块叫做扇区。其大小取决于操作系统的额类型,MSDOS/Windows 使用512字节的扇区。
  2. :根据所使用的的文件系统,上去组合成簇。Windows FAT 文件系统使用2048字节大小的簇,每一个簇有4个512字节大小的扇区构成。
  3. RAM损耗(RAM slack) :该区域的数据信息是在文件被创建时曾驻留内存中的信息。可能什么都没有,也可能是管理员的口令或信用卡账号。虽然没有办法知道内容,当时知道的是处理文件中的数据外,计算机的内存中的数据被写到了磁盘上。
  4. 磁盘损耗(sdisk slack) :由于文件系统以一个2048个字节的簇来写磁盘,而我们的文件只能够填充其中的部分区域。在磁盘损耗位置保存的数据是改文件被写入前的数据。可能是其他文件的残缺数据,或者是一个以前的更长的readme.doc文件。这些潜在的数据可能是一个开头,或者包含被特意删除的文件,或者是很保密的信息。

RAM损耗和磁盘损耗可能会发生在磁盘驱动器、可读写CD、DVD、内存卡,以及事实上任何类型的存储介质上。

参考文献

  1. 《软件测试(原书第2版)》
  2. 《软件测试的艺术(原书第3 版)》

来源:江阿白

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2019年7月22日
下一篇 2019年7月23日

相关推荐