在 Web 应用程序开发生命周期中实现有效的持续应用程序安全控制






2.88/5 (5投票s)
改进您的 Web 应用程序开发流程是避免安全漏洞和在安全评估期间出现棘手问题的最佳方法之一。
引言
在两者之间做出选择时,每个组织都希望从 Web 应用程序开发阶段一直到软件开发生命周期都拥有安全的网站和应用程序。但为什么达到这一点如此困难呢?答案在于他们所拥有的(或缺乏的)流程。
虽然个人和临时性的 Web 应用程序安全评估肯定有助于提高该应用程序或网站的安全性,但一旦一切都得到修复,应用程序的更改和新出现的漏洞意味着将出现新的安全问题。因此,除非您在整个软件开发生命周期中,从 Web 应用程序开发的初始阶段到生产阶段,都实施持续的安全和质量保证控制,否则您永远无法达到保持系统免受攻击所需的高水平的持续安全性——并且您解决安全弱点相关的成本将继续居高不下。
在前两篇文章中,我们涵盖了进行 Web 应用程序安全评估时需要了解的许多基本知识,以及如何修复这些评估发现的漏洞。而且,如果您的组织像大多数组织一样,最初的几次 Web 应用程序评估都是噩梦:发现了大量低、中、高危漏洞,需要由您的 Web 应用程序开发团队修复。该过程要求做出艰难的决定,如何在不影响生产系统或不当延迟预定应用程序发布的情况下,尽快修复应用程序。
尽管最初的几次 Web 应用程序评估令人痛苦,但它们提供了改进软件开发生命周期的绝佳学习经验。本文将向您展示如何建立组织控制,使该过程尽可能轻松,并成为您 Web 应用程序开发工作的一部分。这是对质量保证流程和技术的一个简明概述,这些流程和技术对于从一开始就尽可能安全地开发应用程序并保持其安全性至关重要。不再有大的意外。不再有延迟的部署。
安全 Web 应用程序开发:人员、流程和技术
构建高度安全的应用程序始于软件开发生命周期的早期,从您的开发人员开始。这就是为什么通过 Web 应用程序开发培训来灌输应用程序安全意识是您想做的第一件事之一。您不仅希望您的开发人员掌握如何安全编码的最新知识——以及攻击者如何利用弱点——而且您希望他们知道从一开始就考虑安全性有多么重要(而且效率更高)。这种意识建设不应止于您的 Web 应用程序开发团队。它需要包括在软件开发生命周期中扮演角色的每个人:您的质量和保证测试团队需要知道如何正确识别潜在的安全缺陷,以及您的 IT 管理团队需要了解如何最有效地投资组织资源来开发安全应用程序,以及如何成功评估 Web 应用程序安全扫描仪、Web 应用程序防火墙和质量保证工具集等基本技术。
通过在整个 Web 应用程序开发生命周期中建立意识,您正在建立确保 Web 应用程序安全所需的最核心的控制之一。而且,虽然培训至关重要,但您不能仅依靠它来确保您的系统是安全构建的。这就是为什么培训需要通过额外的控制和技术来加强。您需要开始实施安全软件开发生命周期(SDLC)的要素。
安全软件开发生命周期流程的基本要素
安全的软件开发生命周期意味着拥有考虑并强制执行安全的 Web 应用程序开发所需的策略和程序,从概念到定义功能和技术要求、设计、编码、质量测试,以及应用程序在生产中的生命周期。开发人员必须接受培训,以便在工作中融入安全最佳实践和清单:他们是否检查了数据库查询过滤,或者是否验证了正确的输入处理?应用程序的开发是否符合最佳编程实践?应用程序是否遵守 HIPAA 或 PCI DSS 等法规?实施这些类型的程序将大大提高 Web 应用程序开发过程中的安全性。让开发人员在编写应用程序时检查字段输入并查找常见的编程错误,也将使未来的应用程序评估更加顺利。
虽然开发人员需要在开发应用程序时测试和评估其安全性,但软件开发生命周期流程的下一个主要测试是在 Web 应用程序开发完成后进行的。这时,整个应用程序或一个模块就准备好发送给由质量保证和安全评估人员进行的正式测试阶段了。在软件开发生命周期的这个阶段,质量保证测试人员除了完成确保满足性能和功能要求等典型任务外,还会寻找潜在的安全问题。
许多公司在此阶段犯了一个错误,即没有让 IT 安全团队的成员参与此过程。我们认为,IT 安全部门应在整个软件开发生命周期中提供意见,以免安全问题在 Web 应用程序开发过程的后期出现——并且原本可能是一个小问题现在却变成了一个大问题。
实施这些类型的流程是一项艰巨的工作,并且最初可能看起来很繁重。但事实是,回报可能非常丰厚:您的应用程序将更安全,您未来的安全评估将不再像消防演习一样。有软件开发生命周期模型和方法可以指导您,例如应用程序安全保证计划(ASAP),它制定了构建安全代码所需的许多指导原则,包括高层管理人员的承诺、从 Web 应用程序开发开始就考虑安全性,以及采用指标来衡量编码和过程的长期改进。《安全开发生命周期》一书(Michael Howard 和 Steve Lipner 著,Microsoft Press,2006)是一个很好的入门读物。
技术如何帮助强制执行和维护安全的 SDLC
人性本如此,如果新行为(我们之前讨论过的软件开发生命周期流程)没有得到强制执行,人们就容易回到他们老旧的懒散方式。这就是技术可以发挥作用的地方。合适的工具不仅有助于自动化安全评估和安全编码过程,而且还有助于维持成功的 Web 应用程序开发框架。
正如本系列第一篇文章中所讨论的,最低限度,您需要一个 Web 应用程序安全扫描仪来评估您的定制构建以及您商业上获得的软件。根据您的 Web 应用程序开发团队的规模,以及您在任何给定时间正在处理多少个应用程序,您还需要考虑其他工具来改进您的软件开发生命周期流程。例如,有质量和保证工具可以直接集成到许多组织已经使用的应用程序性能和质量测试程序中,例如来自 IBM 和 HP 的工具。通过将安全性集成到质量和性能测试中,质量保证团队可以从单个平台同时管理功能和安全测试。
建立基线(但初期保持简单)
既然安全培训已经到位,并且您拥有一致、安全的 Web 应用程序开发方法以及所需的评估和开发工具,那么现在是时候开始衡量您的进展了。
起初,您的软件开发生命周期流程中的所有这些变化都会让人感到混乱和耗时。因此,高管和经理,以及 Web 应用程序开发团队和审计人员,肯定会希望看到他们所做的新工作的成果。每个人都会想要指标和基线:我们的应用程序更安全了吗?开发人员的代码写得更好吗?回答这些问题的唯一方法就是开始衡量进展。但是,一开始,不要陷入衡量过多的陷阱。
在实施软件开发生命周期流程的初期,我们强烈建议您保持衡量简单。不要被追踪太多类型的漏洞所困扰。事实上,您可能不想一次尝试追踪和消除所有类别的漏洞。我们见过这种错误很多次:企业试图一次性修复软件开发生命周期各个部分发现的漏洞。然后,一年结束时,他们会发现几十个完全易受攻击的应用程序,而且没有钱来修复所有需要修复的东西。他们最终会手忙脚乱、灰心丧气,一事无成。这不是正确的方法。
因此,一开始,我们学会了一种明智且可行的 Web 应用程序开发流程安全性方法,那就是确定您最普遍和最严重的漏洞。如果它们包括 SQL 注入或可能提供对应用程序未经授权访问的逻辑错误,那么这就是您的初步重点。根据您的评估以及您的系统和业务的性质,选择那些能带来显著差异的最关键漏洞。这些将是您希望在它们(至少在您的应用程序内部)消失的过程中追踪的第一批漏洞。
一旦您的 Web 应用程序开发团队习惯了修复某些类别的漏洞的过程,您就可以将下一批最紧迫的一类(或两类)漏洞加入进来。通过缓慢地将新类别的漏洞添加到您的正式软件开发生命周期流程中,您将有机会平滑流程中的任何问题或障碍。而且,您的 Web 应用程序开发团队将越来越习惯这个过程。不会有大的震惊,经过几个月和几年的时间,您将看到与最初的几条基线相比有显著的改进。
通过实施本文概述的基本控制和技术,您现在已经走上了持续安全的 Web 应用程序开发之路。您的回报将是一个流动更顺畅、成本效益更高的软件开发生命周期流程;您将在开发过程的早期捕获问题,因此您的监管审计将更加顺畅。而且,您将大大降低您的网站遭到成功攻击的可能性。