赞
踩
近些年来,随着我国社会发展和科技进步,在军事、航天、航空、能源、金融、公共安全等众多领域,国家大型关键基础设施正在向着更强、更高的水平急剧跃升,呈现出超大型化、复杂化、安全关键的特征。软件在系统中起到核心的作用。随着软件规模的日益增大,代码数量由几万行,发展到现在经常出现几十万行,甚至几百万行代码的规模,系统的逻辑结构越来越复杂,只靠人工基本上无法满足代码审计的对于时效和成本等各方面的要求。
代码安全审计的目的通过对源代码进行审查,找出并修复代码中的各种可能影响系统安全的潜在风险,通过提高代码的自身质量,达到降低系统风险的目的。往往由于代码量大,代码安全审计一般会借助静态分析类工具,对代码进行自动检测,产生代码安全审计报告。
如果人工代码审计由人工完成,则审计质量主要是由人的技能和经验决定,不可复用和传承。当前,由于软件安全问题越来越突出,国家对软件安全问题也越重视,出台了很多软件安全相关的标准和指南,例如2019年12月1日正式执行的网络安全等级保护2.0,其中对代码安全提出了明确要求。同时对软件质量要求越来越高的前提下,与软件测试相关工作尽量左移,注重和提升代码的交付质量。在开发阶段对研发工程师每天提交的代码进行检测,及时发现和修复缺陷,成为业界和研究领域的热点。
由于软件测试技术的不断发展,以及对软件缺陷模式和安全漏洞模式的研究,促进了软件静态分析技术发展,通过对程序代码进行静态分析能够发现很多语义缺陷、运行时缺陷和安全漏洞,静态测试在软件测试中的重要性越来越突出,尤其是军工科研院所,代码规模的增加以及伴随而来的是越来越复杂的代码结构,完全依靠人工代码审查,成为制约生产效率的关键因素,采用代码自动化分析技术,能够提升开发和测试效率,减低程序风险,同时也降低了研发成本。而军工企业之外的金融、互联网、物联网、AI、无人驾驶等领域,庞大的程序代码如果依靠人工审查也是基本上无法完成的工作。等保2.0评估认证的企业,也需要强有力的代码审查工具,能够在非运行状态下全面审查代码中的安全风险,如果没有成熟的安全审计工具也基本是无法完成的任务。
那么,作为一款代码安全审计工具,应该具有什么样的功能呢?
在国内,很多企业使用开源代码检测工具作为代码安全审计工具,这虽然解决了有无问题,相对于没有这个环节,开源工具能够检测一部分缺陷和漏洞,这在一定程度上也满足了部分企业对于软件质量较低的要求。但是对于质量要求高的企业,开源检测工具的缺陷高漏报,高误报率显然无法满足对于代码质量要求高的企业。
那么代码安全审计是什么样的工作流程呢?
从上面的审计流程可以看到,代码安全审计工作的关键环节在于:
各位,看到这里是否已经大概清楚,基于上面对代码安全审计的流程和所应具备的功能描述,你应该知道如何去选择一款静态分析工具或缺陷检测工具、代码审计工具了。但是切记国内很多所谓的代码安全审计工具只是简单的文件扫描,根本无法做到大工程跨文件的检测,只能通过特殊的正则表达式去检索潜在风险的函数、硬编码等。这样的工具虽然可以生成各种漂亮的报告,但是真正懂代码的人,会很容易发现这样的代码审计报告只能走过场,对于发现和修复代码中的潜在风险,改进代码质量是无好处的,消耗开发人员的时间排除各种误报,肯定也会得到开发团队的抵制的。下一期,我会列出主流的可以进行代码安全审计工具的对比。
(完)
关注安全 关注作者
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。