静态源代码分析工具的利与弊

日期: 2010-06-28 作者:Michael Cobb翻译:王勇 来源:TechTarget中国 英文

问:静态源代码分析工具是识别潜在安全漏洞的最好方法吗?使用静态源代码分析工具有哪些不足之处?   答:在安全软件的开发生命周期中,静态代码分析起着至关重要的作用。借助静态源代码分析工具在代码级解决问题,可以显著增强应用程序抵御恶意软件攻击的能力。通过仔细审查一个应用程序的源代码(无需实际执行该程序),就有可能在开发生命周期的早期阶段发现错误。虽然从来不存在解决安全问题的万全之策,但是代码审查对于安全应用程序的开发非常重要,利用代码审查可以使应用程序满足美国支付卡行业数据安全标准(PCI DSS)6.6节的要求。

  由于现在的应用程序日益复杂,代码审查通常使用自动化的工具来查找程序的漏洞或脆弱……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

:静态源代码分析工具是识别潜在安全漏洞的最好方法吗?使用静态源代码分析工具有哪些不足之处?

  :在安全软件的开发生命周期中,静态代码分析起着至关重要的作用。借助静态源代码分析工具在代码级解决问题,可以显著增强应用程序抵御恶意软件攻击的能力。通过仔细审查一个应用程序的源代码(无需实际执行该程序),就有可能在开发生命周期的早期阶段发现错误。虽然从来不存在解决安全问题的万全之策,但是代码审查对于安全应用程序的开发非常重要,利用代码审查可以使应用程序满足美国支付卡行业数据安全标准(PCI DSS)6.6节的要求。

  由于现在的应用程序日益复杂,代码审查通常使用自动化的工具来查找程序的漏洞或脆弱性。利用这些工具,审查复杂的大量代码和识别开发人员需要全力以赴解决的问题所花费的时间可以显著减少。静态代码分析旨在发现和消除程序中存在的问题,例如缓冲区溢出、无效的指针引用和未初始化的变量等。

  然而,要确保代码审查卓有成效,实施静态代码分析的专家必须具有丰富的知识和技能,能够正确配置代码分析工具和测试环境,切实有效地使用代码分析工具,并准确解读分析结果。全职聘用这样的专家只适合那些不断开发自己的应用程序的大型企业,特别是在代码审查人员与程序开发人员应该不同时。这意味着将代码审查工作外包给其他公司可能是一种更具成本效益的方式,因为你不必负担安装和学习代码分析工具的成本,同时又能够获得精通代码审查的专家创造的效益。

  静态分析的一个不足之处是,多个功能的交互作用可能会导致意外的错误,而这些错误只有当应用程序在压力下运行时才变得明显。因此,一旦软件的功能全部完成,就应该进行动态分析,在真实场景中测试代码。现在,许多软件开发人员还使用一种称作Fuzzing的模糊测试技术,向正在运行的程序连续输入大量无效的、意外的或随机的数据,以测试代码在执行时的稳健性。许多业内人士认为,脆弱性评估是一种比静态代码分析更实用的方法,因为应用程序正变得越来越复杂,无论是不可信的外部用户还是可信的内部用户都可以执行应用程序。

  手动和自动分析容易忽略的一个相关领域是流控制和业务逻辑分析。因为每个应用程序都有其自己独特的功能和特点,所以对于静态或动态分析来说,测试应用程序在真实场景中可能遇到的所有问题并捕获每种类型的错误比较困难。另外,扫描器是如何知道哪些数据需要加密,在什么时候加密的呢?这正是在开发生命周期中建立威胁模型的原因所在。通过识别应用程序存在的风险,可以有针对性地开展工作,以确保在最终版本中将风险降到最低。

  尽管查找和修复程序的错误可能耗时费力,但是从长远来看,这些努力有助于使应用程序更加稳定和安全。因为解决安全问题的成本将随着软件开发生命周期的进展而增加,所以在开发生命周期的早期阶段使用静态源代码分析,不仅有助于提高产品的安全性、增强客户对产品的信心,而且有助于增加最终赢利。