开源软件是提高生产力和软件质量的关键因素,正确的使用开源软件,可以提高产品的竞争力,但是在产品功能不断更新、开发周期不断缩短的压力下,很多公司难以有效的对代码中的开源软件进行有效的识别和管理。而失去管理的开源软件可能会带来多种风险。
风险一:许可证违规
大多数开源软件都有其发布许可(License),如果要使用这些开源软件,应当遵守其许可证(License)的要求,如果在使用开源软件时没有遵守其License 要求的各项义务,就是违规使用开源软件,会造成许可证合规性风险。
开源许可证违规造成的影响可大可小,严重时会导致法律诉讼,造成公司产品的召回、被迫开源自有知识产权代码等等,而这些事件还可能对公司的声誉、市场准入等造成长期的负面影响。
风险二:安全漏洞
开源软件也可能存在安全漏洞,
使用了存在安全漏洞的开源代码,安全漏洞会被引入到您的软件当中。
一些现在没有安全漏洞的开源软件(其实是人们还没有发现其中的漏洞),将来可能会爆出漏洞,如果不能及时知晓这些安全漏洞以及安全漏洞涉及到您的哪些软件产品,也是一种很大的风险。
风险三:自有知识产权代码泄露
有些公司已经参与到开源大潮当中,成为某些开源项目的贡献者甚至时领导者,在对开源社区进行贡献时,如何界定和管理自有知识产权的代码不被开放出去,这点非常重要,如果管理的不好,会造成自有知识产权代码的泄露风险。
当一些公司作为供应商为其用户提供软件产品的时候,也存在自有知识产权代码泄露的风险。
风险四:对“自主可控”造成威胁
在一些关键领域,国家对软件的“自主可控”要求越来越高,而有些公司在一些开源软件的基础上进行简单“加工”而形成的所谓自主可控的产品,实际上为自主可控带来了巨大的隐患。这些公司对其使用的开源软件没有深入的分析和研究,甚至不清楚其产品中都含有哪些开源代码,对核心代码没有什么维护能力,他们所使用的开源软件一旦出现问题或者爆出安全漏洞,他们可能根本没有能力解决。这种软件如果用于一些关键领域,会带来安全隐患,无法达到“自主可控”的要求。
这些开源软件带来的风险,不仅会影响到软件公司自身,有时也会对上下游公司、整个行业造成不良影响,甚至影响到国家安全。
充分发挥开源的优势,不再被开源软件的风险所困扰
如何发现并解决开源带来的风险呢?那就需要对所使用的开源代码进行有效的管理,要实现有效的管理,有几个重要的环节必不可少:
一、 增强开源管理意识,制定开源管理策略
所谓谋定而后动,在没有开源管理策略的情况下盲目的使用或参与开源,会有很大的风险。一个公司在使用开源软件或者参与开源项目之前,应该提高全员的开源管理意识,并制定相应的开源管理策略,这些策略至少应包括:使用或参与开源的基本原则、对开源软件的管理方法、对使用开源或参与开源过程中可能出现的问题的解决方法或预案等。
制定一套开源管理策略,并在该策略的指导下去使用开源软件,才能更加安全和高效的使用开源软件,让开源为公司带来更大的价值。另一方面,没有一套通用的开源管理策略,每个公司应根据自身的需求和具体情况来制定策略,而且这些策略还需要在具体实践中,根据实际情况进行完善和调整。
二、 及时、有效的发现所使用的开源软件及其风险
清楚的了解您所使用的开源软件,是对开源软件进行管理的前提。
了解您所使用的开源软件有两层含义:一是了解您的软件代码中都用到了哪些开源代码;二是了解这些开源代码本身的情况及其可能造成的风险。
很多情况会导致公司无法完全了解其软中究竟引入了哪些开源代码,比如:代码的重用、开发人员随意从网络借鉴来的代码、外来代码、有些开源软件本身嵌套的其它开源代码、有时甚至是人为隐瞒了某些开源代码等等。
要发现这些潜在的隐含的开源代码,需要使用专业的开源代码检查工具对软件代码进行检查。
开源代码检测工具的检测精度非常重要,不仅要能够准确的检测出您的软件中使用的整个开源组件,还要能检测出您的软件中使用的具体的开源文件、甚至是开源代码片段。在保证检测精度的前提下,检测的速度也很重要,速度太慢会影响到软件版本的发布和迭代速度。
仅仅了解到使用了哪些开源还不够,还要了解这些开源代码本身是否存在风险,如果使用开源检测工具,检测工具要能够发现这些开源软件的风险,包括许可证合规风险和安全漏洞风险等。对于许可证合规风险,通过开源软件名称及版本等信息,就可以索引到该开源软件的License,通过分析License 是否符合公司的开源管理策略,就能知道是否存在许可证违规风险;对于安全漏洞风险,可以通过开源软件名称、版本等信息,从安全漏洞库(比如NVD)中索引出相应的安全漏洞,安全漏洞通常是由于软件中的部分代码造成的,所以
如果能够在代码片段级别识别安全漏洞,而不是仅仅从整个开源组件级别去识别,精确度会更高,也不容易产生误报。
三、 让开源管理成为研发流程的一部分
对大多数软件公司来说,开源审查和管理是一项长期而持续的工作,进行这项工作最有效的方式就是将其融入到日常的研发流程中。在研发的早期就引入开源审查和管理,可以从源头上避免开源带来的风险,减少“返工”所带来的高昂成本。
开源管理通常要借助专业的工具,如何在研发的过程中有效的使用开源管理工具,而又不对研发流程和开发周期造成不良的影响,这是对开源审查和管理工具提出的要求。
FOSSID
—— 帮助您安全、合规的使用开源软件
FOSSID 是一个软件解决方案,能够单独部署使用,也可以与现有的开发流程进行无缝集成,能够有效的检测到您的代码库中任何的开源代码痕迹,不论是整个开源组件的引用,还是仅仅引用了一小段代码片段。
FOSSID
可以帮您有效的发现并展示出您的软件涉及到的开源License 及相关的合规性,也能够发现并展示出这些开源软件存在的安全漏洞,帮助公司从开源审查这种繁杂的工作中解脱出来,将精力更多的用于如何为用户提供更有价值的产品。
- FOSSID通过扫描您的代码库,并将代码与FOSSID 的开源代码知识库进行比对,发现您的代码库中存在的开源代码。FOSSID 不仅能发现您使用的代码组件或者代码文件,也能够发现您代码中使用的代码片段。
- FOSSID 能够基于发现的开源软件,在安全漏洞知识库中映射出相关的安全漏洞,并将其作为该开源软件的信息直接展示给用户。FOSSID 在发现安全漏洞时,不只识别开源软件的名称和版本,还能够对导致漏洞的具体代码片段进行识别,从而更加准确的发现安全漏洞,避免了误报。
- FOSSID 支持“所有权扫描”,用户可以将自有知识产权代码或者其它关注的软件代码创建为所有权知识库,并在其它的软件代码中发现那些与所有权知识库匹配的代码。从而有效的保护您自主知识产权代码不会泄露。
- FOSSID 支持代码风险快速查询功能
- FOSSID 能够与其它系统无缝整合
FOSSID 能够对代码文件或代码片段进行快速风险查询,只需将代码片段粘贴到界面的相应窗口中,点击查询按钮,就能够立即找出与之匹配的开源软件及其存在的风险。这是一项十分实用的功能,可以用于开源代码甄选和代码抽查。
FOSSID 能够提供轻量化的客户端(CLI),便于与各种系统集成;同时,FOSSID 基于Web 的各种功能也可以通过RestFul API 提供给用户,用于与其它系统的集成,从而帮助用户将开源审查和管理工作融入到研发流程中。
FOSSID
的主要优势
基于业界最大的开源代码知识库,以及先进的扫描引擎,FOSSID 能够得到准确的扫描结果,不只是整个开源组件的匹配,更能识别出文件甚至时代码片段的匹配。FOSSID的结果能够直接将您使用的开源软件定位到其最初的来源,而不是提供一个中间结果,从而简化了人工确认工作。
FOSSID 的超级代码扫描算法能够在毫秒级别分析代码文件,比有些同类产品的扫描速度快数百倍,这种优势,让用户在开发周期中引入开源代码检测环节时,不用耽误大量的时间进行代码扫描,从而保证软件的发布时间。
FOSSID 不仅能够通过开源软件的名称和版本识别开源漏洞,还能够通过识别导致安全漏洞的具体代码片段来发现安全漏洞,这种代码片段级的安全漏洞识别能力,可以避免漏洞误报,而这种误报在其它的同类工具中却大量存在。
FOSSID 的Quick View 和 Snippet Search 功能,可以对单一代码文件或者代码片段进行快速查询,瞬间找到与之匹配的开源代码,进而了解其存在的风险。在研发早期进行开源代码甄选或者进行代码抽样审查都非常方便。
FOSSID 可以完全部署在您的内网环境下,可以不依赖任何外网的服务器和数据库,也不会有任何数据流量发往外网,从而有效的保障您代码的安全性。
不论是作为单独的工具,或者是处于持续集成环境下,FOSSID 轻量化的客户端(既支持Linux,也支持Windows)都可以无缝集成到您的开发流程当中。同时也为用户提供了RestFulAPI 接口,满足用户的各种集成需求。
了解更多
有关FOSSID 产品和服务的更多信息,请访问:www.fossid.com
中国地区请咨询:
(+86) 177 9251 9176
[email protected]
|
开源大潮不可阻挡,我们既要“拥抱”开源,又要避免其风险,尤其是在市场竞争日趋激烈、知识产权保护力度不断加大、自主可控要求不断强化的今天,如何安全、合规的使用开源软件,是我们需要解决的问题。FOSSID 可以在这方面为您提供帮助,让开源为您带来更大的价值!