应用程序安全关系解析
关键要点
- 应用程序在生命周期的不同阶段面临不同的安全挑战。
- 第一个阶段约为18个月,应用程序通常不引入新的缺陷,但此后缺陷会逐步增多。
- 组织应该提早修复缺陷、利用自动化手段提升安全、重视开发者培训,并建立应用程序生命周期管理。
应用程序与其安全性的关系,类似于其他任何关系。起初会遇到一些问题,一旦解决,问题便会迅速消失。接下来进入蜜月期,关系稳定,感觉一切都很好。然而,正如所有关系一样,这个阶段终将结束,随之而来的重要问题是:“我们如何在这一时期结束时继续安全、可持续地共同成长?”
对于任何特定的应用程序而言,蜜月期通常持续约一年半。在此期间,应用程序的增长与缺陷引入之间没有相关性。尽管应用程序的代码基平均每年增长约40%,但在这一初始阶段,80%的应用程序不会引入新的缺陷,这在我们的
中得到证实。一旦这一美好状态在一年半后结束,缺陷便开始潜入,并在五年内逐步上升。
组织必须仔细审视蜜月期,并思考:在前两年中,是什么让应用程序能够避免缺陷的引入?而为什么在大约一年半后缺陷又开始频繁出现?
可能的一个原因是应用程序生命周期后期人员的更替。例如,原开发团队仍在产品上的时候,所用组件和实践通常比较清晰。然而,当人们转向新项目或新工作时,新开发者将接手,部分信息不可避免地在这个过程被遗失。应用程序可能落入承包商或者缺乏上下文理解的新人员手中,这些人员对元素最初实现的原因和方式了解不多。与此同时,新的功能为了满足客户需求而构建,团队也必须管理这些代码。简而言之,随着应用程序的成长,它们也变得更加复杂。大约18个月后,应用程序沉睡的缺陷将开始“苏醒”。
引导变革中的关系
无论是因为应用程序复杂性增加,还是管理方式的改变,缺陷显然有一种逐步增加的趋势。但组织可以采取以下措施来反制这种趋势:
尽早快速修复缺陷。 应该有意识地在缺陷被检测到后迅速修复,以避免堆积成难以承受的债务。缺陷的修复应该快速进行,因为在应用程序达到两岁时,缺陷通常已经累积。到达十岁时,存在至少一个缺陷的概率高达90%。此外,缺陷越早修复,开发者就越能保持相关知识,并在将来避免类似缺陷的产生。
通过自动化为应用程序未来护航。 自动化扫描应用程序可以显著提升组织识别和快速修复缺陷的能力。实际上,当 在应用程序的CI流水线中引入代码扫描时,新缺陷引入的概率从27%降至25%。即便新缺陷出现,集成扫描的存在也将新缺陷的数量降低近18%。扫描的频率和规律性也非常重要:任意月份的扫描将新缺陷引入的概率减少0.4%。相反,当跳过几个月不进行扫描时,下一次扫描发现缺陷的概率更高。从第一天起设置自动化扫描,无需担忧未来的手动修补和更新,可以为现在和未来提供安心。
重视开发者培训。 我们同样需要开发者培训,以有效构建和管理应用程序的安全性。强调实践培训的组织能够显著降低缺陷首次引入的可能性。完成10个安全实验室的开发者,可以减少引入新缺陷的概率1.8%。另外,表明,至少参加过一个安全实验室课程的组织,能够将修复50%缺陷的时间缩短两个月。自动化可能对某些团队而言尚属正在进行时,但培训是可以立即实现的,应该优先考虑。
**建立应用