读《软件安全测试艺术》有感

Julie ·
更新时间:2024-09-21
· 847 次阅读

  刚从图书馆拿到这本书时,觉得有点不可思议,一本才200页的书有20页类似于序的开场,大多都是很高的评价,封面有Oracle公司首席安全官的高见,他说“软件安全测试真的是一门艺术,本书用大量数字形象地描述的、原汁原味的、恰到好处的破坏性安全测试:证明了“一盎司”的创造性破坏活动需要后期付出“一磅”的修补工作来弥补。”因此,带着一份崇敬开始了阅读第一本安全测试的书。

  第一章从1-14页,讨论通过设法攻破软件来促进软件安全的有关话题。其中印象深的是说安全测试人员不仅应该把自己当做一名验证者,还应该把自己当做一名攻击者,也是必须进行一些探测工作,以判定应用程序薄弱的部分,并设计响应的攻击。要坚持编写安全要求和攻击用例,要尝试强制软件执行那些它的设计中没有的动作。安全测试的基本过程可以简单的归纳为以下四个步骤:(1)使用所有你具备的资源,列出应用程序的输入或“攻击面”。(2)建立威胁模型,将程序组件从高风险到低风险排序。(3)通过“故障注入”,使用常见的“攻击模式”去攻击应用程序的“攻击面”。(4)审查系统,查找常见的“安全设计错误”。

  第二章是从15-45页,章节标题是“漏洞是怎样藏到软件中的”,一看到这个题目觉得很想继续读下去,深刻的体会是思维的转变真的很重要。这一章对各种安全漏洞进行讨论,并探讨如何防止这些漏洞偷偷藏到我们的程序中。所有的软件都存在潜伏的漏洞,给足够的时间,没有找不出安全缺陷的超凡程序。然而,大多数开发人员都极其不信自己的软件中存在任何安全问题,同样,这将能把你的思维方式从“假设软件是安全的”转变为“安全比粗经过证明”。软件安全漏洞分为两个部分:设计漏洞和实现漏洞。设计漏洞是一种设计错误,它使得程序不可能安全运转,而无论代码编写人员实现得多么好都无济于事。与之不同,实现漏洞是软件实际编码中存在的安全错误引起的。常见的安全设计问题如:密码技术使用的败笔,对用户及其许可权限进行跟踪,有缺陷的输入验证,薄弱的结构性安全等;编程语言实现问题如:C语言没有安全的本地字符串类型,也没有安全而易用的字符串处理函数,缓冲区超限会覆盖栈中的函数返回地址,整数溢出等。软件安全是复杂而难以捉摸的,需要在多种技术上获得成功,在多数测试用例中,要对数据输入、数据内容和数据长度进行检验,并验证数据转换的有效性。

  第三章从46-60页,描述的是安全的软件开发生命周期,这与我之前在2.3节中提到的内容有相似的地方,这里将软件安全测试周期分为六个部分:阶段一是安全原则、规则及规章,阶段二是安全需求,阶段三是架构和设计评审/威胁建模,阶段四是安全的编码原则,阶段五是白盒/黑盒/灰盒测试,阶段六是判定可利用性。另外,除了这里所提及到的安全的软件开发生命周期以外,还应该有一个的补丁管理过程。

  第四章从61-76页,这一章是在实际工作中,非常有用的一部分。章节前Chris Wysopal的话十分准确地概括了本章的内容“关注那些攻击难度低而影响大的领域”。要进行威胁建模,必须熟悉程序的设计,要知道了程序的每一个访问入口点位置,这样,才能理解并描绘出程序的“攻击面”。在完成了设计数据收集,并观察了应用程序的攻击面之后,可以接着跟踪应用程序组件数据流,从而揭示程序的高风险区域。这些正是我们在测试中重点关注的地方,我们还可以通过审查来发现一些明显的安全弱点,比如管理接口上没有执行身份鉴别或者会话标识符没有进行加密。威胁建模一共有四个主要步骤:(1)识别威胁路径(2)识别威胁(3)识别漏洞(4)将漏洞分级/排定优先级。这一章告诉了我们威胁建模的流程。

  第五章从77-87页,这一章讲述在安全测试过程中要用到的各种分析技术,不同情况需要不同的分析方法。这里主要介绍的是黑、白、灰盒测试。白盒测试常用于质量保证领域,对于测试人员来说,所有关于被测试系统的信息都是已知的,在安全领域,这也可以认为是一种内部攻击,白盒测试是找出安全漏洞为有效的方法。黑盒测试指以局外人的身份对系统进行分析,使用工具来监测系统的攻击面,并探查系统的内部信息,在没有系统内部知识的情况下,测试人员要获得对系统的情况,许多测试人员都非常依赖黑盒测试技术,并用它作为白盒测试的补充。理想的情况下,在安全测试期间,会一起使用黑盒和白盒两种测试技术,白盒测试用于在设计和开发中详细说明的那些功能中的缺陷,当无法了解应用程序内部信息的时候,使用黑盒测试来找出缺陷,这种组合有时称为灰盒测试。本章中还介绍了测试的一些工具,包括侦探程序、嗅探器、调试器、硬件还有一些商用的测试设备等,如果之后有时间的话,我倒是很想把这些工具都放到我的测试环境中试一试。

  第六章开始进入到该书的第二个部分——攻击演练。从90-194页,分为六章介绍了攻击演练的各种方法,分别是常见的网络故障注入、会话攻击、Web应用程序的常见问题、使用WebScarab、实现定制的侦探工具、本地故障注入。这里介绍了在网络上发现应用程序并对其进行攻击,针对站点Web站点的会话管理功能展开的攻击,还展示了如何执行SQL注入攻击等。从198-213页描述如何基于漏洞对应用程序的潜在影响来确定其影响范围和严重程度。将看到安全漏洞是怎样在处理器指令层上触发的,这样,可以辨别应用程序的崩溃是否会导致代码的执行。

  读完本书大的感受是“测试真的很重要”,虽然我还没有完全感受到测试的艺术,但是测试真的比我平时了解的、接触的需要更专业的知识,它并不是一项可有可无的工作。目前,我还没有想过会专心做测试这个方向,所以对于该书中很多很好的实例、工具也没有更好的去学习,觉得有点遗憾,或许以后的工作中会更多接触到测试,我会更进一步去学习。



安全测试 软件安全 艺术 测试 软件

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章
Rena 2020-03-14
651