通过使用源代码安全审核工具,研发人员可以快速消除已知编程缺陷和脆弱性的源代码。使用源代码安全审核工具主要有两点好处,一是有助于将代码审核过程规模化;二是有助于执行安全编码策略。根据NIST统计的源代码安全审核工具列表,目前市场上主流的源代码安全审核商业工具见表9-4。
表9-4 主流源代码安全审核工具
尽管源代码安全审核工具大大提高了工作效率,但仍然存在一些缺点。商业银行在选择源代码安全审核工具时需要重点关注。
1.误报
当程序中不存在问题时却报告了问题。大量的误报会使得研发人员必须花费更多的精力对付那些并非bug的问题。这不仅让人感觉像是在做体力劳动,而且长长的误报列表还可能埋没真正的问题,所带来的净效应就是研发人员最终停止使用该工具。
2.漏报
漏报比误报的问题更为严重,程序中存在问题却没有报告出来,不但使用户为代码中存在漏洞相关的事情买单,还会给用户造成一种安全的假象。(www.zuozong.com)
3.兼容语言
源代码分析工具大多倾向于重点在某个特定的编程语言子集上。例如:微软的Vis-ual Studio 2005中的PREfast仅分析C和C++代码。而IBM的Rational Appscan Source Edition则针对于web代码要多一些。所以,如果信息系统研发过程中采用了多种语言,那么所采购的源代码安全审核工具必须兼容这些语言。
4.无法发现设计错误
大多数工具仅能发现源代码缺陷,而不是设计错误。为便于解释,可以将软件缺陷总体分为两个松散的组:一般性缺陷和某种环境特有的缺陷。一般性缺陷是指在用各种编程语言写的几乎所有程序中都会产生的问题;环境特有的缺陷需要根据程序的语义确定。例如一个处理信用卡号码的程序,为遵循“支付卡行业数据保护标准(PCI DSS)”,程序永远不能将完整的信用卡号码显示给用户,但是每个程序都有一套自己的方法来完成此项工作,要找出这个问题,必须要理解程序所定义的函数和数据结构。
除了识别缺陷所要求环境的数量之外,许多缺陷只能在具体的程序环境下才能发现。图9-8给出了由缺陷类型和缺陷可见性形成的矩阵表。像批量授信这样的高层次问题往往只能在程序的设计中看到,而像忽略了输入有效性验证这样的错误通过检查程序源代码就能发现。
图9-8 缺陷类型和缺陷可见性矩阵[43]
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。