减少软件开发bug数的策略

日期: 2010-02-22 作者:Robert Westervelt翻译:唐波 来源:TechTarget中国 英文

SANS协会和MITRE公司上周更新了CWE/SANS 排名前25位的编程错误列表,焦点落在能够应用于安全开发周期中以避免多重安全bug的减灾技术。但有专家称虽然编码错误列表有助于改进软件开发进程,而在实际情况下让公司执行更加安全的软件开发过程是不太可行的。Veracode的合作创始人兼首席技术官Chris Wysopal说,这会加重开发者的负担,然而很多公司可以小幅度地向软件开发进程中引入安全要素。Wysopal作为一位安全软件编码者帮助创建了第一个安全研究智慧库L0pht Heavy Industries,它之后加入了咨询和研究机构@stake,2005年Symantec将其收购。

  问……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

SANS协会和MITRE公司上周更新了CWE/SANS 排名前25位的编程错误列表,焦点落在能够应用于安全开发周期中以避免多重安全bug的减灾技术。但有专家称虽然编码错误列表有助于改进软件开发进程,而在实际情况下让公司执行更加安全的软件开发过程是不太可行的。Veracode的合作创始人兼首席技术官Chris Wysopal说,这会加重开发者的负担,然而很多公司可以小幅度地向软件开发进程中引入安全要素。Wysopal作为一位安全软件编码者帮助创建了第一个安全研究智慧库L0pht Heavy Industries,它之后加入了咨询和研究机构@stake,2005年Symantec将其收购。

  问:如果你是小型软件开发团队的成员,你将如何应用这些编码错误示例?

  Chris Wysopal:我认为有两种方式使用这一25大编程错误列表(简称top 25)。如果你在做测试,在你提交软件或部署之前,你可以确保所有出现于top 25中的易错点均经受了测试。确保你拥有软件开发工具,手动进程或其他的技术可供测试。自动化会更好。对于开发者来说,软件的设计人员和开发人员都应当对照top 25,并确保他们使用了那些技术,这样会防止软件中出现多种漏洞。你必须有预防措施,并进行测试。

  问:软件开发的速度和项目完成的期限是否会使防御技术和测试的应用更加困难呢?

  Wysopal:事实上,安全软件最大的障碍是遵照进程按部就班地工作。我们有这些列表,我们知道哪些错误不能犯,我们有减灾列表来防范安全错误。现在还出现了很好的静态和动态测试工具。我们面临的挑战在于大家都试图不影响开发的进程,不延误开发的时间或让更多的人加入其中。我认为,挑战在于我们该如何以轻量级的方式插入信息并测试开发的进程,而且仍然能让软件如期完成。这是软件行业如今面临的真正挑战。

  问:软件开发工具变得更加容易检测漏洞,但与此同时,他们是否给开发团队带来了更多的压力,让他们改正错误,并由此带来更多的问题?

  Wysopal:要求他们消除top 25中列出的所有错误会是个挑战。Veracode没有为我们的软件提供黑白评级系统。只是对于最高保证级的软件(我们将其称为五级重要业务软件)才必须消除top 25中列出的所有错误。当然,对于业务级别不太重要的软件,如果不是运行股票交易或开飞机,标准自然可以降低一些。你不能把要求定得千篇一律。所以我建议对业务性要求不太高的行业软件可以适度放松要求。

  问:几年的时间里,Hewlett-Packard收购了SPI Dynamics,IBM Internet Security Systems收购了Watchfire,微软开始真正推进安全软件的开发,环境是否会发生巨大的变化呢?

  Wysopal: 三年半前我在Veracode的时候,我们告诉潜在客户要在软件开发周期中进行静态分析,很多人那时并不知道这一概念。他们不理解为什么要在软件开发的时候考虑安全问题。微软和其他的一些大型公司意识到了这一问题,但95%的软件开发者都用异样的眼光看待我提出的这一问题,然而如今情况已经发生了很大的变化。我认为开放式网页应用程序安全项目OWASP Top 10,top 25以及向开发人员讲述这一问题的其他方式已让他们意识到:如果在软件开发过程中不作质量检测,就会造成产品出现漏洞。我发现客户也意识到了安全的重要性,他们会敦促开发人员注意这方面的问题。

  问:这种意识已上升到了商业层面了吗?

  Wysopal:在某些行业已出现了变化,例如金融和政府。当这些组织开展内部软件开发时,他们会进行外包或购买一些种类的定制软件;他们知道必须对开发团队在安全性能上提出一定的要求,因为如果不这样的话就不会安全。

  问:旧版软件是否带来了许多重大问题?开发团队又被迫检查过去的软件,而这类软件有些是没有源代码的?

  Wysopal:这是个很大的问题。微软的Michael Howard称,软件版本越早安全性方面的bug就越多,因为后辈们在平台级别、语言级别或使用到的库方面都不够理解,没有人还会考虑其安全性。所以说软件版本越旧,问题也越多。这是一个很大的挑战,因为我们的软件开发都是建立在旧代码的重用基础上的。任何软件都是需要基础支撑的,除非是在全新的平台上或完成全新的任务时才有可能从底层开始。许多的业务中都会出现代码重用。库的共享或仅仅重用任务流程。如果你要保障应用程序的安全性,你不能忽视新代码之外的旧代码重用部分。你不能要求你的开发人员保证写出来的每一行代码都是安全的,因为那样只能解决一半问题。你还必须检查重用的旧代码中的问题。另一方面,公司内部可能运行着几年间都没有经过检查的软件包。它们会成为定时炸弹,公司最后将不得不解决这些问题。