天下网吧 >> 网吧天地 >> 网吧技术 >> 网吧安全 >> 正文

安全基础 注意应用软件可能存在的漏洞

2008-2-18赛迪网佚名

  在信息系统安全所涉及的方方面面中,有太多东西需要CIO、CSO们特别关注,面对来自各方面的提醒,很多人已经有些麻木了。但是,安全专家还是要再次提醒一下这些负责人,毫无疑问,有充足的理由证明,下面将要探讨的问题应该被列为他们的关注重点,这就是软件安全(也有一些人称为应用安全)。

  CIO要介入软件开发流程

  也许有人会问,这些年作为信息安全主要负责人的CIO、CSO们不是一直在测试应用系统的安全吗?为什么还要说他们根本没有考虑应用软件的安全呢?这里先进行一下解释。

  这些年来,为了信息安全,CIO们的确已经慢慢接近这一层次,比如通过操作系统进入了网络层,最近也开始考虑应用层。但是,这里要说的是,这种“接近”太肤浅了。是的,我们曾经购买了各种各样的安全产品,我们安装了防火墙,安装了入侵检测系统或者入侵防护系统,还有个人防火墙、反垃圾邮件和防间谍软件系统、防病毒等等,我们一直在不停地购买和安装系统,我们希望某个产品或者某个软件组合能够保证我们业务的正常运营。

  但是下面这个事实不可否认,今天我们的经营活动很大程度上是在应用软件的基础上开展的。尽管这些系统本身也在安全方面进行了充分的考虑,笔者也不提倡完全抛弃这些安全措施,但是我们不能希望他们能够提供我们需要的应用软件安全。

  解决这个问题的唯一办法就是尽早动手,亲自参与到软件开发的流程中去,也就是进入软件安全领域,包括软件的设计、开发和软件安全性的测试等。

  根据笔者的经验,由于采用了软件外包,在大型企业中软件开发工作不管是涉及的范围还是开发量都在减少,对企业而言,只要软件满足了这些企业的需求就可以了。因此,在大多数情况下,企业的CIO和软件的真正开发工作联系并不紧密,甚至可以说很少有CIO会真正介入到软件的实际开发过程中,除了在软件已经开发完成即将交付,需要对软件进行所谓的安全测试以外。这时的测试通常是攻击测试(Penetration Test),这正是目前我们在软件安全上做得不好的地方。

  要保证软件的安全,就必须介入到从软件产品开发的早期直到软件的最终结束整个过程。现阶段,我们很难看到有人这么做,而事实上,的确需要这样的工具(或者服务)。

  这听起来很简单但真正做起来却并不容易。这一点比较容易理解,因为在达到这个目标之前所需要跨越的障碍实在太多了。CIO手下的人,即使最合格的信息安全工程师,也很少能说在软件开发上非常精通,他们并不了解究竟有哪些技术能对此提供帮助,而另一方面,对于开发者而言,他们缺乏对现代的软件面对的攻击工具和技术的了解,不具备独立地开发出能够应对这些攻击的软件的能力。

  跨越鸿沟

  在开发人员和信息安全人员之间存在很大的鸿沟,这是一个真正必须跨越的鸿沟,其解决办法也不像把IT人员送去参加软件培训或者把软件开发人员送去参加“黑客家园”这么简单,实际上要比这困难而且复杂得多,这涉及到多个团队或者组织的协作。

  首先,目前我们可以看到的软件开发过程非常多,有崇尚个人英雄主义的非常原始的作坊式的开发方法,也有古板的程式化的软件开发生命周期理论。尽管软件过程各异,但是这些方法都有一个共同点,那就是最后都会有一套产品拿出来。这些产品包括设计文档(依据软件过程不同,具体内容也不同)、软件源代码和测试计划/结果。

  如果仔细审查一下这些产品,我们就可以发现在安全方面还是有机会进行改善的,甚至有很多机会能让我们改善软件的安全性。下面对这些机会进行简单的介绍。

  需求 很多(但不是全部)软件开发人员会把收集和整理功能需求作为软件开发的第一步,他们会形成需求文档或用例,用来描述用户最终会如何使用该软件。

  这一步是保证软件产品安全的第一个机会。一种办法是进行通常所说的滥用案例分析(Abuse Case Analysis)。这是一种简单的办法,其思路是考察软件中的某些功能是否可能被攻击者滥用。比如,假设有一个Web应用想在其中添加一项订阅新闻组功能。这一功能是有可能被攻击者滥用的,比如,黑客用工具自动进行订阅,可以订阅上万次,这样下次有新闻组邮件发出来的时候,这个Web应用就会向这些订阅者发送,变成了一个垃圾邮件的制造者。如果在页面设计和订阅流程没有考虑这些问题,其最终很可能给运行这些应用的企业带来非常不好的影响。

  设计 几乎所有的软件开发者都会在把他们的设计整理成文档,这里我们也可以有机会从安全的角度对设计进行一次评估。正如人们所知道的,有几种方法可以做到这一点(这里不再对此进行赘述),这些方法都有一个共同点,就是会进行深入分析,包括组件和接口等有可能被攻击的对象。

  在最低程度上,对设计的评审至少要包括了解软件所支持的经营活动、认真研究具体的设计、与设计人员进行沟通。另外,除了进行业务风险分析外还要进行技术评估等。一旦有所发现,就要把他们立刻记录下来,并区分出轻重缓急。如果有必要,还要对设计进行修改和完善,或者至少,针对这些风险要制定出相应的应对措施,特别是其中非常关键的那些。

  听起来这像是老生常谈,但是,除了极端复杂的情形外,只有软件开发者们与信息安全工程师通力协作就能完成上述目标。

  通力协作

  编码 很长时间以来,由于各种各样的原因,信息安全的有关人员一直没有介入到软件的开发过程。而事实上,与开发人员一起对这个过程进行评审是信息安全人员最困难的工作之一,因为这需要对开发时采用的技术、编程语言等有非常深入的了解才行。

  好消息是,现在已经有了几个实用的商业软件可以帮助开发人员分析他们的源代码的安全性。开发人员和信息安全人员可以一起共同对这些工具的分析结果进行分析,并对分析工具发现的各种问题和可能带来的后果进行评估,从而改善软件的安全性。

  测试 正如前面所述,今天很多的安全测试不过就是攻击测试而已。甚至所谓的“应用攻击测试”也不过就是一种“黑盒子”测试,使用一些我们已经非常了解的攻击工具和技术从远程对软件进行攻击。

  但这是不够的。在软件测试领域,覆盖(Coverage)是一种比较普遍用来对测试效果进行评估的方法。覆盖包括很多方面,比如测试时运行过的代码占全部代码的百分比。

  根据覆盖有关的理论,除非有特别的原因,攻击测试只是安全测试的一个组成部分,它需要与代码检查、错误条件检查、边界检查一起共同保证软件的安全性,这才是一个完成的过程。

  这里,CIO的人需要发挥自己的作用。因为软件测试通常属于软件质量保证队伍的工作,而质量保证测试员更关注软件是否满足功能需求、是否符合有关的规范,换句话说,他们测试软件如何工作,而不关心软件如何被破解或者被别有用心的人滥用。

  为了充分测试应用软件的安全,除了功能方面外,测试计划和场景必须考虑攻击者如何进行攻击,这也是需要负责信息安全的人参与的地方。

  毫无疑问,应用软件安全这个问题很复杂,这里只是触及了皮毛。不过,最根本的问题是大多数CIO还没有意识到要介入到软件开发过程,从中发现机会与软件开发人员共同协作保证软件的安全。另一方面,为了有效地利用这个机会,CIO们也需要对技术发展有充分了解。目前需要在企业中建立一种合作的环境和氛围,而在实践中,我们听到CIO的人和开发人员用太多的“我们”和“他们”来称呼对方。很显然,要保证应用软件的安全,单靠开发人员,或者靠各种测试工具和产品都是做不到的,需要大家的共同努力。

欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛https://bbs.txwb.com

关注天下网吧微信,了解网吧网咖经营管理,安装维护:


本文来源:赛迪网 作者:佚名

声明
本文来源地址:0
声明:本站所发表的文章、评论及图片仅代表作者本人观点,与本站立场无关。若文章侵犯了您的相关权益,请及时与我们联系,我们会及时处理,感谢您对本站的支持!联系Email:support@txwb.com.,本站所有有注明来源为天下网吧或天下网吧论坛的原创作品,各位转载时请注明来源链接!
天下网吧·网吧天下
  • 本周热门
  • 本月热门
  • 阅读排行