IT是个有趣的世界,网络既是商业运作的关键驱动力又是攻击者的主要攻击目标。由于攻击者到处作恶,企业们也开始更加认真的对待应用程序安全。根据OWASP项目组最近进行的调查结果显示,四分之一的受访者计划在网络应用程序安全方面增加开支。
这是个好兆头,因为确实存在很多网络应用程序漏洞,不过这种状况也引出一个问题,究竟企业应该如何在应用程序开发阶段建设安全性。虽然在开发阶段就开始建设安全性听起来很不错,可是实施起来去很复杂,需要良好的规划。
根据Forrester研究所分析师Mike Gualtieri表示,很多应用程序开发小组知道安全问题,也考虑过用户验证、授权和关键数据加密等问题。不过这些对于他们而言,都是难题。
美国纽约州某法律事务厅的首席信息安全官,Deborah Snyder曾经历过因为误解而造成的安全问题。
“当我第一次谈论安全开发生命周期的概念的时候,大家认为安全只是访问控制方面的问题,”她表示,“安全只是程序开发后加入的东西,或者说在开发后半期用于简单控制访问该程序或者访问数据的东西。”
早期的时候,确实很少有人知道如何在软件开发周期(SDLC)建立安全,但是后来大家开始了解,安全的SDLC需要适当的规划。 “在早期就应该建立安全性,因为这样能够避免更多的程序漏洞问题。”
Snyder表示,在规划阶段,根据重要性和涉及的数据类型或者将要支持的交易类型,该项目小组开始对他们建造的系统或者应用程序的重要意义有所了解。随后会对这些进行改进,并根据风险级别提供适当的信息安全访问级别。
确定威胁
SDLC的关键部分就是威胁同步建模。在“使用威胁建模来开发更安全的应用程序”文中,Gualtieri写道威胁建模过程的第一步就是汇出应用程序架构的数据流图(DFD)。该图应该能够说明整个应用程序的架构组件和组件间流通的数据,并描述防火墙或者对外部系统访问等防御。
只有当绘出能够完整展现架构的图,才能进行良好的威胁建模,例如,如果你的应用程序存储信用卡数据,如果你不画出信用卡的数据存储形状,就不能正确的为这个组件分析威胁。
最广泛使用的威胁建模解决方案包括微软的SDL威胁建模攻击,而这种产品的市场不是特别成熟,不过威胁建模确实是很重要的。
这些攻击有一定的局限性,包括它们使用的是预先确定的情况,无法适应特定的针对应用程序威胁的情况,并且不能将威胁与金融损失相联系。
“威胁建模的潜在风险在于,将其作为一次性任务来进行,并以此为基准,而不是将其作为风险管理攻击的重要组件来纳入SDLC中。”
尽管如此,威胁建模是必要的。在Sony电影娱乐公司,威胁建模过程主要是头脑风暴和基于已知漏洞的whiteboarding,并对不良操作采取最佳解决方案。这样做能够很大限度的避免漏洞。“虽然我们做得还不够完美,不过我们开始逐渐消除各种类别的不同漏洞,很多web应用程序漏洞是以输入为基础的,因此它们往往缺乏基本的验证,这也是我们要求开发人员验证所有进入应用程序架构的东西的原因。”
存在如此多漏洞的最大原因可能是因为有太多代码存在。
“想想看在应用程序中有多少SELECT语句需要进入数据库获取数据,”Gartner分析师Joseph Feiman表示,“可能每一个SELECT都是SQL注入攻击的潜在对象。SELECT语句不会因此降低,需要处理的数据库的数量也不会减少,因此,你也不能减少对数据库的访问,而这些也成为SQL注入攻击的潜在目标。”
理想的情况是,应用程序安全需要做到这一点,并不是安全审计员和测试者来发现出95%的漏洞,而是在开发阶段就避免掉这些漏洞。
【编辑推荐】