如何通过反馈循环提高应用程序安全性
对于大多数组织来说,提高应用程序安全性意味着实施更多的安全软件开发生命周期(Secure SDLC)。实施完所有内容后,该怎么办?还是您可以做些什么来改善现有的能力?一种方法是评估当前一切工作状况,然后进行更改、评估和继续。
这种方法的问题在于,由于多种原因,应用程序安全度量可能很困难。使用发现和修复的漏洞数量不会考虑每个漏洞的严重性。即使您考虑了严重性,为什么漏洞数量仍在减少?您在发现它们方面变得更糟还是在预防它们方面做得更好?通过跟踪应用程序安全性中的基本指标很难判断发生了什么。
什么是AppSec中的反馈循环?
在没有完善指标的情况下提高应用程序安全性(AppSec)的一种方法是创建反馈循环。反馈循环很简单:使人们可以实时访问信息,并使他们有机会进行更改。有许多研究表明反馈循环的有效性以及它如何帮助改变人类行为。反馈循环可用于应用程序安全性,以通过更改开发人员行为来帮助改进代码。
反馈循环分为四个阶段:
- 证据:衡量并捕获行为
- 相关性:行为是在使人产生共鸣的环境中给予人的
- 后果:该人了解该行为如何导致负面结果
- 行动:人员必须根据数据采取明确的行动
执行该操作后,将收集更多数据,并再次开始反馈循环。
如何有效使用反馈回路
反馈回路的一个示例是在速度限制标志旁边添加动态速度显示。在合法速度限制(相关性)旁边,会向用户提供汽车的速度(证据)。人们会想起超速行驶的不利方面,例如罚单或事故(后果),因此大多数驾驶员会减速(行动)。不仅如此,驾驶员在标志以外的几英里处平均减速10%。此反馈循环可有效地获得所需的结果并使人们改变行为。
可以在应用程序安全性中利用反馈循环,以帮助获得更安全的代码和更少的漏洞的预期结果。一种方法是利用诸如Parasoft之类的静态应用程序安全测试(SAST)工具,从该工具中获取漏洞数据,并将其提供给编写代码的开发人员以及该漏洞的严重性和潜在影响。开发人员可以在上下文中看到他们所犯的安全错误,并意识到这些漏洞的潜在影响。接下来,开发人员将修复相关的错误,并根据使用HackEDU之类的平台发现的漏洞进行相关的安全编码培训,以确保他们正确修复了该漏洞。开发人员在编写安全代码方面变得更好,因为他们在了解后果之后正在学习自己犯的错误。反馈循环与安全软件开发生命周期一起持续,结果是获得了更安全的代码。
这样创建的反馈循环是:
- 证据:向开发人员提供了他们创建的安全问题
- 相关性:开发人员查看他们编写的代码中漏洞的严重性
- 后果:开发人员根据漏洞和严重性意识到潜在的风险和影响
- 行动:开发人员修复问题并根据他们提出的特定安全问题进行培训
该反馈循环有助于改变开发人员的行为,并开始降低软件漏洞的风险。开发人员提高了编写安全代码的能力,使他们更加意识到代码中的潜在问题,并且他们了解不编写安全代码的后果。
将反馈回路与SCA和编码标准一起使用
应用程序安全性的其他领域也可以使用反馈循环。所有这些都旨在帮助告知和改进软件开发人员的行为。例如,一个领域包括使用软件组成分析(SCA)工具(例如OWASP Dependency Check)向开发人员提供第三方库漏洞信息,并使开发人员负责升级库。如果开发人员甚至选择完全使用它们,那么他们将更仔细地考虑使用哪种第三方软件包)——成本收益转移给了开发人员。
可以使用反馈循环的另一个领域是基于软件扫描或代码审查来更新安全编码标准。向开发人员提供漏洞以及严重性和影响。如果适用,开发人员将采取的措施是根据发现的问题制定编码标准。如果已经存在针对该问题的标准,或者如果该问题本身不符合标准,那么开发人员可能需要在诸如HackEDU之类的代码审查平台中练习安全编码。
没有完善的指标,应用程序的安全性仍然可以提高。由于软件开发(目前)是基于人的活动,因此更改开发人员的行为并利用反馈循环扫描对提高应用程序安全性具有巨大的影响。