近年来,随着新业务、新技术的快速发展,软件安全缺陷层出不穷。虽然一般情况下,开发者基本都会有单元测试、每日构建、功能测试等环节来保证应用的可用性。但在安全缺陷方面,缺乏安全意识、技能和工具,最终导致了安全缺陷的出现。其中,静态分析安全测试(SAST)作为一种最有效的工具,能够在开发阶段,而不是开发完成之后,探测出源码中的安全漏洞,从而大大降低修复安全问题的成本。
日前,新思科技(Synopsys)推出静态分析工具的最新版本——Coverity 2018.01。Coverity作为一款静态应用安全测试工具,能够通过分析代码,查找出一些潜在的软件质量、安全缺陷以及合规方面的问题。如今,SAST已经广泛应用于各行各业的开发测试工作场景中,确保代码的质量和安全,减少风险并降低整体项目成本。
作为全球第15大软件公司,新思科技的主营业务是EDA,即集成电路自动设计的软件。2014年,新思科技成立了Software Integrity Group(简称SIG,软件质量与安全部门),专注做软件质量与安全的测试环节,目前已在全世界范围内有一千多名员工。
新思科技软件质量与安全部门 高级安全架构师 杨国梁
据新思科技软件质量与安全部门高级安全架构师杨国梁介绍,Coverity核心技术源自于斯坦福大学的一个研究项目,后期逐渐转化为一个商业化公司,提供目前业界最佳的SAST工具。
在Gartner、Forrester、 IDC和VDC权威机构的测评中,Synopsys的静态分析工具被评定为领先的应用安全测试解决方案。
三大升级,满足开发者安全测试所需
Coverity 2018.01扩展了对于新编程语言、编码标准以及开发工具集成的支持,具体包括三大升级:
1、扩展的编程语言覆盖范围,新增支持Scala和VB.NET编程语言
即使企业扩展其软件组合,采用新的语言、架构及技术,比如移动和微服务,Coverity也能帮助企业在应用程序中主动构建安全性和质量。每次发布新版本,新思科技都将持续扩大Coverity对新的编程语言的支持,同时加强对现有语言的安全分析。
Coverity 2018.01增加了对两种新语言的支持:通常用于基于微服务的应用程序开发的Scala和VB.NET。这两种语言能够广泛地应用在应用类的开发、Web应用类的开发以及大数据的处理方面。目前,Coverity支持的语言种类已达17种。
最新发布的Coverity还为Swift、 PHP、 Python、 JavaScript、 Java、 C#和 Node.js编程语言提供增强的安全分析。通过这些新增功能,Coverity支持用于构建嵌入式和企业级软件的关键程序语言。
2、支持安全编码标准,全面支持SEI CERT C编码标准规则(2016 版)
最近,新思科技发布了首份CISO报告,总结分析了信息安全高管的工作模式以及公司变化对他们角色演变的影响。CISO(首席信息安全官)报告基于信息安全高管的工作模式不同分为四个截然不同的群体,并称之为“部落”(Tribes)。报告重点讨论了四个部落在执行安全计划方面的不同之处。其中有一些CISO是由合规性驱动的,有一些是CISO是由安全本身驱动的。
在合规方面,各行各业面临的规范、要求也不一样。例如,银行业可能会面临PCI-DSS(支付卡行业数据安全标准)的要求,汽车行业会面临MISRA规范等。基于此,Coverity帮助企业遵循编码标准,提升关键嵌入软件的安全性及可靠性。
随着最新版本的发布,Coverity 2018.01全面支持SEI CERT C (2016 版) —— 安全编码的行业标准。除了CERT C, Coverity也支持MISRA编码标准的所有版本,并通过了ISO 26262认证。
3、与现代开发工具链的集成,增强Jenkins持续集成(CI)服务器插件,基于DevOps进行自动化测试
Coverity支持并集成许多常用的开发工具,以助力实现快速和自动化的开发工作流程。Coverity 2018.01为最新的集成开发环境(IDEs)提供插件,包括Visual Studio、 Eclipse、 IntelliJ和Android Studio等等。
为了优化安全测试,最新版本还借助Jenkins持续集成(CI)服务器,以支持开箱即用的集成。Coverity新的Jenkins插件进一步完善了Jenkins Pipeline工作流框架,可以按项目检索发现问题,并增强了数据过滤功能。
安全和质量应成为研发的首要因素
回顾2017年,“WannaCry”勒索病毒在全球范围内爆发,波及150多个国家和地区、10多万的组织和机构以及30多万网民,损失总计高达500多亿人民币。该事件的发生,让我们深思,更加意识到如何防患于未然成为很关键的问题。
杨国梁表示,究其根本无非是两个问题:一个是软件有bug,导致它后续有一些恶意代码;二是设计上有缺陷,导致它能够利用成为后续的安全事件。
因此,对于企业来说,应把安全和质量的把控向研发开始阶段的前面推。据统计,代码存在bug和设计缺陷导致的问题各占一半左右。所以,企业要从设计需求分析伊始,就要加入安全方面的考量。尽可能使用SAST等各类安全测试工具,来确保软件的安全性。
目前,敏捷研发、CI/CD、DevOps、微服务等趋势都是在快速上线的要求下产生的新模式。但对于软件安全来说,由于时间和精力所限,必然会在便捷性和安全性之间产生一定程度上的矛盾。
杨国梁表示,在这些新型开发模式下,也要做好相应的安全测试工作。例如,通过SDLC(软件生命周期)的方法,每个开发人员写出代码之后,立刻检查,构建的时候再合并检查分析,就可以把问题马上修复。
通过Coverity就可以快速的满足这种开发需求。开发人员可以利用Coverity的IDE插件,在eclipse上写完代码,本地实时检查,实时修改。Check in代码之后,再做一轮检查。通过这种无缝集成的流程可以确保迁移到DevOps或者CI/CD环境下,最大程度的确保软件的质量和安全。
同时,对于不同规模的企业,他表示,无论大公司,还是小公司、创业公司都同样重视安全。根据BSIMM(软件安全成熟度模型)的评估结果,大公司从整个SDLC的不同阶段,都会部署不同的工具,来保证软件从设计到上线的整个阶段都是安全的。因此,大公司才有可能在人力、物力、资源等方面,落实整个安全开发生命周期的模型。
而一些小型公司或者创业公司,虽然可能没有CIO来建立一整套开发流程安全规范,但是也很注重安全。IT人员会根据对安全的重视程度,通过采购SAST工具、第三方或是开源工具的方式,保证软件在研发阶段的安全。
完成软硬一体化转型,实现全面覆盖
通过从硬件到软件的拓展,新思科技实现了软硬一体化的转型,从而能够为客户提供更加全面的解决方案。帮助客户从设计到发布阶段,采用多样化的测试工具,通过“产品+咨询服务”的组合,确保软件在整个生命周期中的安全和质量。
新思科技的硬件和软件部门会有很多客户的重叠,不少硬件客户也开始需要一些软件服务。例如,汽车行业的客户,在芯片设计过程中,会涉及到一些软件产品的覆盖,在此过程中,硬件部门会协同软件部门密切合作共同服务客户。
目前,德尔福、卫士通、通用汽车公司(GM)、Denso等都已经成为新思科技软件部门的客户,涵盖电信设备、互联网、移动端、物联网嵌入式设备、金融、汽车等行业。
不同的行业会有不同的需求,新思科技也会不断完善和更新产品功能。例如,互联网行业对于新的语言跟进速度会比较快,在Coverity 2018.01版本中也新增了Scala和VB.NET编程语言的支持。嵌入式行业对C、C++有更多的要求,新版中也已经完全支持CERT C的安全编码规范。
加快本土化发展,满足中国市场需求
在产品本地化方面,Coverity两个版本之前就已经推出汉化版本,所有界面和文档都已经全部实现汉化,中国用户已经可以完全打消语言方面的顾虑。
本地服务方面,新思科技持续加大对中国区的投入。目前,售前、售后及研发都已在中国区落地,有充足的技术资源确保中国客户使用SIG的产品。去年,新思科技也在中国发布了最新版本的软件安全构建成熟度模型——BSIMM8的汉化版。
中美两国企业对于安全意识有何差异呢?杨国梁表示,美国一些公司已经开始逐渐接受内置安全(Build Security In)的概念,在研发阶段就及早的引入SAST工具。
而目前国内,更多的企业更乐于接受一些渗透测试、第三方代码检测等。但是,也有一些安全意识领先的中国企业在研发早期阶段就引入了SAST工具。
我们可以看到,越来越多的安全厂商都在针对中国市场提供本地化的产品,这也得益于中国乃至亚太地区企业的安全意识越来越强。新思科技也正在紧跟步伐,推出满足中国市场的产品。