在整个开发生命周期中实现自动化安全测试对于避免后续的重大问题至关重要。然而,当诉诸IT外包,一些组织将可交付成果与他们的正常管道分开,导致了松散的安全测试。
对于那些在应用程序完全开发完成后进行所有安全测试的组织来说,这个问题变得更加复杂。在这个后期阶段,识别漏洞并反向查找它们的来源是低效的。此外,忽略安全问题的风险要大得多,因为许多错误不会导致软件功能上的问题。
许多组织在软件发布生命周期中根本不使用自动化安全测试,而是依赖于手工测试,这一事实使这些问题变得更加复杂。事实上,根据网络安全内部人士的说法2018年应用安全报告在美国,只有43%的组织采用自动化安全测试。
然而,这并不意味着组织不知道这个问题。的Sonatype 2018年度DevSecOps社区调查在过去的12个月里,33%的受访者组织经历过网络应用程序或开源组件问题导致的入侵。这导致73%的受访者表示,他们的组织对实现和投资安全实践有更大的兴趣。
因此,越来越多的组织现在在整个开发生命周期中实现安全测试,而不是在最后附加它,作为一个事后的想法。然而,采用仍然没有像它应该的那样广泛。
采用自动化安全测试并有效地实现它的第一步是确定它能发挥最大作用的领域。
自动化安全测试并不意味着完全消除手工测试。我们的目标不是把婴儿和洗澡水一起倒掉。相反,重要的是分析产品生命周期,并确定自动化安全测试可以在哪些方面发挥最大的作用。
通过实现自动化安全测试,您可以集中精力进行手动测试并提高其价值。手动测试仍然是必要的,因为它可以识别自动化测试无法识别的过程中的错误。
在自动化测试中,系统只能识别它编程要查找的漏洞。它当然不能识别业务逻辑中的问题,而这正是手动测试的切入点。
换句话说,自动化测试不应该取代手工测试。为了达到最好的效果,您应该同时使用这两种方法,因为它们都发挥着至关重要的作用。
为了获得最好的结果,您的目标应该是将安全性集成到软件开发生命周期中,而不是在开发完成后再将其保留下来。对于任何实现DevOps原则以获得竞争优势的组织来说,这是绝对必要的。
DevOps帮助公司更快地发布代码,确保它们保持竞争力。毕竟,客户希望比以往更快地交付升级和新应用程序。花费数年时间开发软件已经不可能了,也不再有效。
将安全测试集成到流程中会产生所谓的DevSecOps,并且它已经变得越来越流行。这是因为DevOps不仅能让组织更快地发布代码,还能显著减少bug和安全问题。
如果您希望在开发管道中实现安全测试,下面是一些基本的最佳实践。
现在速度是最重要的。您发布产品和升级的速度越快,您的竞争力就越强。为了降低随软件一起发布漏洞的可能性,您需要将安全性集成到工作流中。然而,要保持这种节奏,您必须自动化安全测试。
当您每天将许多新代码投入生产时,您就不能再依赖手工安全测试了。它根本无法跟上。这意味着自动化安全测试是至关重要的,特别是如果您不想发布带有bug的软件。
如果你试图每天自动扫描应用的所有代码,你将浪费大量时间。这当然会让你保持一个好的节奏变得更具挑战性。此外,这是不必要的。
相反,将测试集中在当天所做的改变上。这是一种更有效的方法。
另外,考虑使用自动化DAST或动态应用程序安全测试。静态测试检查代码中可能存在的安全问题,而动态测试则在应用程序运行时实时搜索问题。
还要考虑在持续集成平台中自动化安全测试。这将减少在开发周期早期引入漏洞的可能性。
更高的创新速度和更快满足客户需求的需求,导致组织越来越依赖于开源软件。问题在于其中涉及风险,开发人员很少有时间检查代码或阅读文档。
出于这个原因,在管理第三方和开源过程时自动化过程是明智的。重要的是要发现使用这些组件是否会在应用程序中造成任何漏洞,以及它们可能会对任何依赖项产生什么影响。
静态应用程序安全测试(SAST)工具非常棒,因为它们可以在开发人员编写代码时扫描代码。这样,对于任何可能导致安全挑战的问题都能立即得到反馈。识别挑战并在出现时修复它们的能力使这些工具对软件开发生命周期至关重要。
然而,实行克制是强制性的。通常,在实施SAST工具时,安全团队会设置系统来检查一切。一开始就有这么多检查,开发人员会感到沮丧和恼火。
相反,从小处着手。一开始检查一两次就足够了。你需要获得开发人员的支持,这需要信任。当他们看到这个工具如何帮助他们时,他们将更愿意接受额外的检查。
威胁建模练习并不容易,但它们很强大。它们可以帮助您的安全团队更好地了解对您的资产存在的威胁,以及这些资产可能是敏感的。它们还将帮助你更深入地了解现有的控制方法,以保护你的资产,并发现那些控制方法需要改进的地方。
威胁建模练习可以帮助您识别软件设计和体系结构中其他评估可能忽略的问题。
虽然您不能自动化威胁建模,但它仍然是无价的,因为它让您的开发人员站在攻击者的角度,为他们提供了非常有价值的新视角。
一个重要的问题是,许多开发人员没有意识到他们的代码不安全,因为他们没有接受过考虑这方面的培训。因此,培训您的团队了解安全性的重要性,以及如何对他们创建的代码采取更安全的方法是至关重要的。
如果使用得当,自动化安全测试(AST)是高度可靠的。这是因为AST并不意味着要取代手工测试。相反,它的作用是处理那些平凡的、重复的、占用大量时间的任务。这样,您的安全团队就可以更多地关注需要人类逻辑来识别问题的领域。
AST的可靠性还取决于您正在使用的系统。例如,如果您正在使用自定义脚本,则需要确保它正在检查正确的漏洞。
IT外包的问题是很多组织都认为的软件开发外包就像第三方供应商一样。这不是最明智的做法。
在Perficient拉丁美洲,我们坚信,当外包团队被视为组织中不可分割的一部分时,就能获得最好的结果。这意味着您将需要实现与任何IT外包公司你可以像在你自己的组织中那样使用。
换句话说,您需要确保团队中的开发人员接受了安全编码的培训。他们还需要访问相同的工具,并实现您在内部执行的相同政策,或者如果不同,明确设置预期。
在可能的情况下,将较大的项目分解成较小的可交付成果也是一个很好的实践。通过更频繁地将这些可交付成果集成到您的软件开发管道中,它们将经受您在内部运行的同样严格的安全测试,从而提供了一个额外的风险降低层。
所以,当和IT外包团队中,您需要实现与您在自己的组织中所做的相同的自动化安全测试。此外,通过将项目分解为更小的步骤,您将能够更容易地识别和修复漏洞。这比在整个项目完成时试图解决所有问题要有效得多,因为这可能会导致忽略某些问题的更大风险。
--
想要了解更多?我们很乐意更详细地解释!
通过接受,您将访问https://nearshore.perficient.com/外部的第三方提供的服务
评论