目前尚不清楚QA可以或应该在Application Security程序中扮演多少角色(在大多数组织中,QA意味着进行手动功能测试或编写自动功能验收测试的黑盒测试人员)。
对安全性(而非开发人员)的质量检查进行培训
在RSA 2011大会上,Caleb Sima断言, 在Appsec中培训开发人员主要是浪费时间 (“ 不要教开发人员安全性 ”)。
因为大多数开发人员不会得到它; 即使他们确实获得了安全性,他们也没有时间担心安全性; 而且大多数开发团队的人员流动率过高,因此,如果您对他们进行培训,他们的任职时间可能不会足够长,以至于无法发挥很大作用。
Sima建议从质量检查开始。 因为测试人员需要付费才能找到问题所在,所以Appsec可以让他们找到更多的失败案例。
他建议不要让测试团队接受常规的Appsec培训,而建议采用更具针对性的渐进方法。
从安全扫描或笔测试开始。 让安全专家检查结果,并确定找到的1个或2个最高风险类型的漏洞,例如SQL注入或XSS之类的问题 。
然后请该安全专家对测试人员进行培训,使其了解这些错误的内容以及如何查找它们,并帮助他们向开发人员解释这些错误。 开发人员还将通过解决这些错误来学习有关安全性的知识。 修复所有优先级最高的错误后,请对测试团队进行接下来的两个重要漏洞的培训,然后继续进行下去。
不幸的是,这行不通…
这种方法在几个重要方面存在缺陷。
首先,它没有解决软件安全问题的根本原因:开发人员在设计和编写软件时犯了安全错误。 这是短期的绷带。
在短期内,要求质量保证团队在应用程序安全性中扮演领导角色存在一个基本问题:即使在接受培训后,大多数测试人员也不了解安全性。
Denim Group最近的一项研究评估了开发人员和QA在接受培训之前和之后对应用程序安全性的了解程度 。 在完成安全培训后, 只有22%的测试人员通过了基本应用程序安全测试。
测试与笔测试不同
这令人失望,但并不令人惊讶。 数小时甚至数天的安全培训无法使黑盒子功能性QA测试仪成为应用程序安全笔测试仪 。 尼克·科布伦茨(Nick Coblentz)指出,安全培训将使一些明星脱颖而出。 一些测试人员,例如某些开发人员,将“获得” White Hat / Black Hat的东西并爱上它,并及时投资以真正做到这一点。 但是,这些人可能不会继续进行任何测试-如今对有才华的Appsec专家的需求太多了。
但是大多数测试人员不会擅长于此。 因为这不是他们的工作。 因为对于拥有艺术史学历的人和计算机科学一样有学历的人来说,了解架构和平台以及语言的技术细节太多了,这些人通常没有经验并且已经工作过度。 这些细节非常重要–在Appsec中,即使是很小的错误,也没有遗漏小的错误都是很重要的。
Cigital花了很多时间帮助在不同公司设置Appsec程序,并研究对这些公司有效的方法。 他们发现:
将QA纳入软件安全性并非易事……即使是“简单的”黑匣子Web测试工具也很难使用。为了扩展规模以解决我们为自己创建的庞大的软件安全问题,质量保证部门必须成为解决方案的一部分。 挑战在于使质量检查人员了解安全性和最重要的攻击者的观点。 解决此问题的一个狡猾技巧是将攻击者的观点封装在可由QA使用的自动化工具中。 我们了解到的是,即使是今天的Web应用程序测试工具(一阶缺陷度量仪 )对于花费大量时间来验证功能需求的测试人员来说仍然难以使用。
但是安全测试比笔测试要多
安全测试比笔测试和运行黑盒扫描要多得多。 因此,即使不能将QA测试人员变成笔测试人员,Appsec培训仍然可以增加价值。
Appsec培训可以帮助测试人员更好地测试安全功能以及系统的隐私和合规性要求:确保用户设置以及登录和密码管理正常运行,检查访问控制规则是否得到一致应用,审核审核和日志文件,以确保安全。确保正确记录活动,并跟踪使用,显示和存储私人和机密数据的位置。
而且,Appsec培训可以为测试人员授予使用另一种方式测试系统的许可证。
大多数测试人员花费大量时间来验证正确性:遍历测试矩阵和手动清单,编写自动功能测试,专注于测试范围并确保代码符合规范,或者在代码更改时留意回归。 其中很多是CYA验证。 这是必须完成的,但是它很昂贵,而且对人员和时间的使用很差。 除非程序员做得草率,否则您不会以这种方式发现很多严重的错误。 随着越来越多的开发团队采用TDD之类的做法(开发人员负责测试他们自己的代码),让测试人员进行这种手动验证和回归将变得越来越无用且越来越普遍。
除了验证安全功能之外,这种测试对安全性根本没有用。 您无法通过运行一些肯定的测试来证明系统是安全的,不容易受到注入攻击,特权提升或其他攻击。 你需要做
负面测试,直到您对成功利用漏洞的风险感到满意为止。 您仍然不会知道该系统是安全的,只是它看起来“足够安全”。
走出幸福之路
在测试人员走出严格编写的快乐路径并探索系统如何工作的时候 ,事情变得更加有趣。 做ifs。 测试边界条件。 尝试规范中没有的内容。 尝试破坏事物 ,并观察它们破裂后会发生什么。
在现实世界中测试高风险的业务逻辑,例如在线购物,在线交易或在线银行功能,成对或团队测试以检查时间错误或TOC / TOU问题或其他竞赛条件或锁定问题,注入错误以查看错误如果系统在事务进行到一半时发生故障,则通过再次返回到先前的步骤或尝试跳过下一步,重复步骤两次或三次或更多次来中断工作流程,则会发生这种情况。 输入负数或非常大的数字或无效的帐号。 监视错误消息中的信息泄漏。 行动异常。
这种QA测试人员能够了解域和系统的工作状况,比短期测试中的笔测试人员可以更好地完成这种测试。 只要他们愿意做一点黑客。
要使测试人员在应用程序的高风险区域中进行一些探索性和负面的测试,就不需要太多的培训,也不必增加测试成本。 通过这种方法可以发现许多重要的安全性缺陷(以及功能性缺陷和可用性问题),这些缺陷是无法通过遍历测试清单或运行漏洞扫描程序和动态分析工具而发现的。 应用程序安全培训应加强对测试人员以及开发人员和管理人员的重视,进行这种测试非常重要,并且以这种方式发现的错误对于修复很重要。
根据Cigital的“ 成熟度构建安全性模型”,从质量功能的功能测试到边缘和边界条件测试以及“对抗性测试”,是质量检查团队在应用程序安全中发挥作用所需要采取的第一步。质量检查团队可能会继续集成黑盒安全测试工具,并可能集成其他更高级的安全测试工具和实践。
安全测试的真正价值
但是,即使您可以将一些安全测试提供给质量检查人员,您仍然需要依靠安全专家。 您需要真正了解工具和技术问题,花费大量时间进行黑客攻击,了解安全风险并有报酬以跟上不断变化的威胁态势的人。 至少比您期望攻击的人好或更好的人。
这可能意味着要依靠您自己组织中的专职安全专家,或与外部顾问签约以进行笔测试和其他审核,或者利用WhiteHat , Qualys , Veracode ,HP和IBM。
重要的是要获取所有测试的结果(无论是由质量检查人员还是笔测试人员来完成,还是由第三方测试服务来完成)并对其采取行动。
开发人员和管理人员需要了解这些错误的含义以及为什么需要修复它们以及如何正确修复它们,更重要的是,如何防止它们在未来发生。 测试的真正目的是向开发和管理,风险,设计看起来薄弱的地方或SDLC中需要填补漏洞的地方提供信息。 直到我们能够通过测试然后修复然后再测试然后再修复...来预先阻止安全问题之前,我们没有完成任何重要的事情。 这意味着测试人员,开发人员和管理人员都必须比今天更好地了解安全性。 因此,请教开发人员安全性。 和测试人员。 还有经理。
翻译自: https://www.javacodegeeks.com/2014/01/how-much-can-testers-help-in-appsec.html