随着开源技术在云计算、大数据、AI领域的不断运用,不断破除技术壁垒,让企业快速建立自身的应用,在开源软件基础一,自主研发部分代码,便可以推出企业自身品牌的产品,开源技术的应用极大的推动了云计算、大数据、AI等领域的快速发展。但是开源软件的引用不可避免的带来了知识产权、信息安全等方面问题。根据Gartner统计,98%的企业管理者并不知道自己研发产品里的成分、安全程度以及是否可能侵权等情况,其实产品团队快速交付的产品可能蕴含着巨大风险,这些风险可能导致企业产品受到攻击、公司名誉和声誉受到影响,严重者由于知识产权方面诉讼可能面临企业经营风险。另一个方面,随着开源技术的不断广泛应用,更多的安全漏洞被暴露出来,每年超过4000个安全漏洞从开源软件中被报告出来,且不断递增的趋势,而由于开源软件任何人都可以下载和研究代码中的潜在风险,引用了开源软件的产品软件就更容易受到攻击。
国内,很多科研院所和大企业也逐渐认识到开源技术带来的问题,关于开源治理的研究和探讨逐渐成为热门话题。在2019年,中国信息通信研究院牵头制定了国内首个《开源治理能力评价方法》系列标准,旨在通过标准制定指导开源相关企业规范内部开源治理流程,维护国内开源秩序,推动开源生态健康有序发展。该评价方法分成两个部分,第1部分是面向自发开源企业,第2部分是面向开源用户。这些评价方法的推出,开源软件生产企业有了标准可参考,使用开源软件的企业遵守这些评价方法,避免企业使用开源软件带来的风险。当然企业需要根据这个评价方法制定符合企业自身的开源管控流程规范。
但是笔者认为仅仅依据评价方法是不够的,规范、流程等的落地执行,执行情况、执行效果是需要相应的检查方法和手段进行管理的,所以是需要在这个开源治理的流程和方法中,是需要借助工具进行检查的,尤其是对开发完成的软件产品,代码量可能数十万行、上百万行甚至更大,对于管理者就像是一个黑盒子,仅仅产品功能实现和满足了,并不代表没有风险,是需要通过对软件成分和漏洞进行检测的工具进行验证的,让整个产品的代码在管理者面前不再是黑盒,代码成分中有哪些开源组件、这些组件是否有安全漏洞,是否存在引用许可风险、开发团队到底编写了多少代码等等,如果能够通过检测,就能让管理者一目了然,胸中有数,便于后续的管理和市场运作。
那么对于一款可以针对系统中的开源组件进行检测的软件工具,应该具备哪些功能、性能等指标呢?根据笔者经验,这里我列出一个清单,仅供参考。
- 首先支持主流的开发语言,最少支持10种以上检测语言,最好也能支持二进制文件、jar包和动态链接库检测,因为有时候引用的不是源代码。支持的语言至少包括C/C++、Java、JavaScript、C#、Python、PHP、Ruby、Go、Objective-C、PLSQL/SQL、Swift;
- 开源软件检测,主要采用的是检索技术,那要求工具包括的开源代码库和安全漏洞要足够多,这样才能保证匹配精度;且上述数据最好本地化安装部署,否则涉及到自身代码的安全问题,例如Blackduck不安装本地库,检测结果就不能对应到源代码上;
- 目前,CVE漏洞库中总计在20万左右,且国内也有两个漏洞库CNVD和CNNVD,里面有国内企业上传的漏洞,对于一款检测工具,其中漏洞库也是越大越好,起码库中不少于10万个安全漏洞;
- 对于被检测项目,能够实现提供检测项目的版本号、发布时间、检测时间、代码行数、自主研发代码比例、开源组件占比,组件匹配情况、部分匹配情况和外部依赖情况信息;
- 对于检测出的每个组件成分,提供当前版本号、发布日期、包含漏洞数量,包括高、中、低不同等级的漏洞数量,组件类型(开源、闭源),并提供组件对应的最新版本信息,以及建议升级到相应版本的信息;并为用户提供升级下载的链接;
- 对于检测出的每个组件成分,提供组件许可协议的详细信息,包括简称、风险等级、使用范围、影响项目等。至少支持60种以上的许可证类型;
- 对于检测出的每个组件成分,提供组件包含的漏洞详情,至少包括漏洞CVE官方名称、发布日期,漏洞对应的CWE漏洞类型。最好能够提供CVSS2.0或CVSS3.0(通用漏洞评分系统)参考,这样管理者就能了解包含安全漏洞的严重程度、可利用性和影响项目信息。对于每个漏洞,提供漏洞详情描述、并提供导向CWE官方网站的详情页面链接,让用户能够快速掌握漏洞信息;
- 项目、组件、漏洞三者之间的关联分析,既能够通过项目找到组件及其包含的漏洞,也能够通过漏洞找到存在的组件,影响的项目数量、项目名称等信息;
- 对于管理者,能够统计当前用户项目数量和状态信息、组件语言等信息,所有组件以及其漏洞信息、组件开发语言信息等,所有漏洞及其严重级别统计、影响项目统计、漏洞类型统计等信息;
- 分析开源软件的粒度,越细越好。至少包括文件级、函数级,有些工具只是做到了文件级还是不够的;
- 能够根据客户要求进行定制,例如建立企业可信组件库,纳入Devops工作流、工具链;
- 检测效率达到60万行/小时以上,太慢速度会让人失去耐心;
面对越来越严峻的开源环境,在国家层面上加快对开源生态治理的法律、法律,而对于开源软件生产企业,遵守开源生态的法律法规,守住企业经营的底线,对于开源软件的广大用户,需要根据法律法规制定符合企业自身的治理规范和流程,同时借助自动化的检测工具落地,能够让您的企业生产减少风险。
关注安全 关注作者
关于代码安全,跟作者沟通交流请留言。