新思科技(Synopsys)在Forrester Wave™发布的《2021年第一季度静态应用安全测试》报告中被评为领导者。在此次评估中,新思科技Coverity静态分析解决方案在“现有产品”类别中获得最高分,并且在“策略”类别中名列前三。多年来,全球许多企业和组织都采用Coverity,以降低安全风险、确保应用程序灵活性,并迅速向市场提供新功能。NGINX是其中一家。
NGINX背景介绍
NGINX开源(发音为“engine x”)是全球最广泛的Web服务器之一,为Netflix、Hulu、Pinterest和GitHub等站点提供支持,凭借其高性能、稳定性、丰富的功能集、简单的配置和资源消耗低等优势而广受赞誉。 NGINX开源系列的其它成员包括NGINX JavaScript(njs),一个向NGINX添加JavaScript支持的模块; NGINX Unit,动态应用服务器,支持用Perl、Python、Ruby、Node. Js、Go、Java和PHP.njs编写的应用。
所有三个NGINX开源项目的开发人员都使用新思科技Coverity Scan®查找并修复其代码中的缺陷。新思科技(Synopsys)提供免费在线服务,并由与新思科技商业Coverity静态分析工具使用的一样的引擎提供支持,Scan可帮助开源开发人员识别代码缺陷,以便快速、轻松地进行补救。
NGINX软件编写者兼联合创始人Igor Sysoev在2014年的一次采访中说:“我坚信开源的力量。NGINX是一个针对非常具体问题的实验,即如何在单个现有服务器上处理更多客户。原来这是一个普遍的问题。当意识到NGINX确实有助于提高Web性能时,我希望人们使用它,因此我将其设为开源。”
NGINX开放源代码版本还可以用作反向代理、负载平衡器、邮件代理和HTTP缓存的Web服务器,为超过4亿个网站提供支持,其中包括Netflix、Hulu、Pinterest和GitHub等品牌。Igor Sysoev在2011年与合作伙伴共同创立了NGINX,以提供对NGINX 开源的正式支持,并提供商业版本NGINX Plus,该版本在NGINX 开源中增加了企业级功能。
2019年,NGINX被应用安全和交付公司F5 Networks收购。如今,NGINX的开源项目家族包括njs(向NGINX添加JavaScript支持的模块)和NGINX Unit(动态应用服务器)。
挑战:确保开源代码的质量及安全
NGINX联合创始人兼工程副总裁Maxim Konovalov介绍道:“在创立NGINX不久之后,我们就将Coverity Scan集成到了CI / CD流程中。自2012年以来,我们每天都在提交NGINX构建工件。”
Maxim Konovalov继续说:“在许多情况下,NGINX充当互联网前端,其安全性和稳定性对其用户至关重要。我的团队对提升代码质量孜孜不倦,并一直在寻找最佳实践和工具以改进代码质量。诸如Coverity Scan之类的静态代码分析工具为我们提供了很大的帮助。”
NGINX将公司视为数百万个应用程序和网站的基础技术,并严格要求自己。代码质量和安全是NGINX企业精神的一部分。对于开发实践来说,有效的工具必不可少。
解决方案:采用Coverity Scan进行静态代码分析
人们通常认为大多数软件漏洞是因为恶意攻击,但其实不然,这主要是由于代码错误导致的。GitHub发布的2020年度安全报告“2020 State of the Octoverse”显示,GitHub从2019年到2020年发送警报的漏洞中,有83%是由于编码错误引起的,而不是恶意攻击。
但是恶意攻击确实会利用代码中的缺陷,开发人员需要使用主动检测工具来发现他们编写的代码中的错误。静态分析根据一组编码规则检查源代码,以发现常见的编码错误。已在scan.coverity.com注册项目的开源开发人员可以免费使用这项服务,与新思科技的商业Coverity静态分析工具所使用的引擎是相同的,该功能可帮助开源开发人员识别代码缺陷,以便快速、轻松地进行补救。Linux Foundation在2020年的一份开源贡献者的报告中指出,受访者“绝大多数都引用Coverity Scan和Clang安全检查器”作为主要静态分析工具。
成效:扫描了658,000行代码,缺陷密度为0.02%
2021年1月, Coverity Scan为NGINX分析了658,665行代码,并发现了各种代码缺陷,其中包括两个CWE Top 25缺陷。由于F5 Networks定期使用Coverity Scan,NGINX项目的缺陷密度(每1,000行代码的缺陷数)仅为0.02%。
Maxim Konovalov赞赏道:“Coverity Scan为我们增加价值。我经常推荐Coverity Scan及其在代码提交中提供特定缺陷ID的功能。实际上,我是FreeBSD提交者小组的成员,我们也使用Coverity Scan进行FreeBSD的代码分析。”