跨越鸿沟
在开发人员和信息安全人员之间存在很大的鸿沟,这是一个真正必须跨越的鸿沟,其解决办法也不像把IT人员送去参加软件培训或者把软件开发人员送去参加“黑客家园”这么简单,实际上要比这困难而且复杂得多,这涉及到多个团队或者组织的协作。
首先,目前我们可以看到的软件开发过程非常多,有崇尚个人英雄主义的非常原始的作坊式的开发方法,也有古板的程式化的软件开发生命周期理论。尽管软件过程各异,但是这些方法都有一个共同点,那就是最后都会有一套产品拿出来。这些产品包括设计文档(依据软件过程不同,具体内容也不同)、软件源代码和测试计划/结果。
如果仔细审查一下这些产品,我们就可以发现在安全方面还是有机会进行改善的,甚至有很多机会能让我们改善软件的安全性。下面对这些机会进行简单的介绍。
需求 很多(但不是全部)软件开发人员会把收集和整理功能需求作为软件开发的第一步,他们会形成需求文档或用例,用来描述用户最终会如何使用该软件。
这一步是保证软件产品安全的第一个机会。一种办法是进行通常所说的滥用案例分析(Abuse Case Analysis)。这是一种简单的办法,其思路是考察软件中的某些功能是否可能被攻击者滥用。比如,假设有一个Web应用想在其中添加一项订阅新闻组功能。这一功能是有可能被攻击者滥用的,比如,黑客用工具自动进行订阅,可以订阅上万次,这样下次有新闻组邮件发出来的时候,这个Web应用就会向这些订阅者发送,变成了一个垃圾邮件的制造者。如果在页面设计和订阅流程没有考虑这些问题,其最终很可能给运行这些应用的企业带来非常不好的影响。
设计 几乎所有的软件开发者都会在把他们的设计整理成文档,这里我们也可以有机会从安全的角度对设计进行一次评估。正如人们所知道的,有几种方法可以做到这一点(这里不再对此进行赘述),这些方法都有一个共同点,就是会进行深入分析,包括组件和接口等有可能被攻击的对象。
在最低程度上,对设计的评审至少要包括了解软件所支持的经营活动、认真研究具体的设计、与设计人员进行沟通。另外,除了进行业务风险分析外还要进行技术评估等。一旦有所发现,就要把他们立刻记录下来,并区分出轻重缓急。如果有必要,还要对设计进行修改和完善,或者至少,针对这些风险要制定出相应的应对措施,特别是其中非常关键的那些。
听起来这像是老生常谈,但是,除了极端复杂的情形外,只有软件开发者们与信息安全工程师通力协作就能完成上述目标。
应用软件更要注意安全问题(2)
内容版权声明:除非注明,否则皆为本站原创文章。