新思科技《2022 年开源安全和风险分析》报告分析解读第三篇——许可证/开源维护部分

本文主要是介绍新思科技《2022 年开源安全和风险分析》报告分析解读第三篇——许可证/开源维护部分,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

许可证

许可证冲突

无许可证或自定义许可证

各行业许可证合规情况

前十大有冲突的许可证(新增内容)

开源的维护

开源维护者的现状(新增内容)

总结


随着整个社会加速数字化、网络化、智能化,开源已经成为势不可挡的趋势,驱动云计算、大数据、人工智能等技术和产业的进步。而随着开源产业繁荣兴起,开源的安全问题也备受关注。

今年4月,新思科技发布了《2022年开源安全和风险分析》报告(OSSRA)。该报告由新思科技网络安全研究中心(CyRC)制作,共调查了17个行业的2400多个商业代码库的匿名结果。报告共包含六个部分:简介;概述;开源漏洞与安全;许可;开源的维护;总结。下文将从以上六个部分出发,对2022与2021年度报告进行对比分析。

许可证

2022年度报告中的许可证分析部分的数据是基于2021年被审计的2409个代码库。2021年度报告中的许可证分析部分的数据是基于2020年被审计的1549个代码库。两个年度报告中均对被审计代码库中许可证冲突占比;无许可证或自定义许可证占比;各行业许可证合规情况进行了对比分析,2022年度报告中新增内容为:被审计代码库中,包含前10个有冲突许可证的代码库占比 。

许可证冲突

2017-2021年许可证冲突呈现逐渐下降的趋势。2021年审计的代码库中有53%包含有许可证冲突的开源代码,较2020年的65%大幅下降,见图7。

无许可证或自定义许可证

2018-2021年无许可证或自定义许可证的开源代码的代码库的占比在2019年出现上升后,2020年、2021年逐年下降, 2020年无许可证或自定义许可证的开源代码的代码库的占比由26%下降到2021年的20%,见图8。2021年报告中对自定义许可证的风险进行了解释,并以JSON许可证作为例子,侧面说明了自定义许可证存在的不确定风险。该许可证实质上是宽松型MIT许可证,由于添加了 “该款软件严禁用于恶意用途,仅限用于善意用途”的注释。许多热门项目的责任单位 — 尤其是Apache基金会的项目 — 都因为许可证定义含糊不清而删除了使用JSON许可证的代码。2022年报告中对此并无更多分析解读,主要强调了2021年统计数据无许可证或自定义许可证的开源代码的代码库的占比为20%

各行业许可证合规情况

2022年报告与2021年报告中均用图表的形式对于相同的17 行业的有冲突许可证在代码库中的占比数据进行了展示。2022年报告用文字的形式提到了占比最高的行业为计算机硬件及半导体,其占比为93%、其次是物联网行业为83%,最低的行业为医疗保健、健康科技和生命科学,其占比为41%。2021年报告对于行业许可证冲突情况的描述:主要提到了,存在开源许可证冲突的代码库比例最高的行业是能源和清洁科技以及制造业、工业和机器人行业,其占比为均为86%。零售和电子商务行业中存在开源代码许可证冲突的代码库的比例最低,其占比为47%。两个年度报告均未对行业的许可证冲突占比的具体原因进行分析,也没有具体指出17行业被审计代码库的数量分别是多少。

前十大有冲突的许可证(新增内容)

2021年报告中并未提到前10个有冲突的许可证的代码库占比情况,此内容为2022年报告中新增内容。增加此内容的目的,个人分析认为,是想通过Creative Commons Attribution ShareAlike 3.0这一冲突许可证在代码库中的占比增长来引起人们对于特定许可证冲突增加的关注,

2022年报告中提到,2021年统计数据显示,17%的受审计代码库被发现与Creative Commons Attribution ShareAlike 3.0许可证存在某种形式的冲突,而2020年该统计数据为15%,见图9。由此引出,虽然许可证问题在逐年减少,但一些特定许可上的冲突在悄然上升,许可证合规问题仍需重点关注。

开源的维护

这一章节的大标题在2021年度报告中为可持续,其主体内容是一致的,主要为开源项目的维护现状。2022年OSSRA报告开源维护部分中的数据是基于包括风险评估的2097个代码库。 2021年度报告中的可持续部分数据是基于2020年被审计的1549个代码库。

两个年度报告从以下五个指标对开源项目维护情况进行了统计。分别是:包含两年内未新开发的组件占比;包含至少四年未曾更新的组件占比;包含过时四年多的开源的占比;包含非最新版本组件占比;包含在维护人员更新上落后一年或一年以上的组件占比。其中,包含两年内未新开发的组件占比指标,从2020年统计结果的91%下降到了2021年的88%。

表 2021-2020年开源维护情况统计指标表

指标

2021(%)

2020(%)

包含两年无任何开发活动的组件在代码库中的占比

88

91

包含至少四年未更新的开源代码在代码库中的占比

85

包含过时四年多的开源代码在代码库中的占比

85

包含过时版本的组件在代码库中的占比

88

包含至少一年没有任何维护活动的组件在代码库中的占比

16

数据来源:新思2022、2021年度OSSRA 报告

2022年报告中认为开发者未及时更新开源项目,除了开发者认为更新的风险大于新版本带来的好处以及时间或资源问题以外,很大部分的原因是因为,开发者不知道开源组件的新版本已经可用,通过对比分析开源软件与商业软件的不同,来强调要针对开源软件带来的安全风险,需要通过一些技术手段进行治理。

开源维护者的现状(新增内容)

2021年报告未对开源项目维护者的现状进行描述。2022年度报告对此进行了阐述,重点强调了,人们通常认为有成千上万的开发人员负责开发和维护(免费和开源软件),而事实上并非如此,23%的开源项目只有一个开发人员贡献了大部分代码。94%的开源项目由不到10个开发者贡献了超过90%的代码行。

总结

对比两个年度报告的总结部分。结语部分的内容共使用了1个版面,内容上,首先从2021年热点问题Log4j漏洞入手,来强调开源带来的危险性;然后,说明开发者要面对的是开源治理问题而不是开源本身的问题。最后,阐述SBOM清单对于开源治理的重要性。2021年度报告结语部分共使用了4个版面,内容上:宣传其软件安全培训课程、静态分析工具;开源项目NGINX OPEN SOURCE安全治理案例分析;SBOM清单。其共同点都是强调SBOM清单对于开源治理的重要性。

这篇关于新思科技《2022 年开源安全和风险分析》报告分析解读第三篇——许可证/开源维护部分的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/373832

相关文章

MyBatis Plus 中 update_time 字段自动填充失效的原因分析及解决方案(最新整理)

《MyBatisPlus中update_time字段自动填充失效的原因分析及解决方案(最新整理)》在使用MyBatisPlus时,通常我们会在数据库表中设置create_time和update... 目录前言一、问题现象二、原因分析三、总结:常见原因与解决方法对照表四、推荐写法前言在使用 MyBATis

Python主动抛出异常的各种用法和场景分析

《Python主动抛出异常的各种用法和场景分析》在Python中,我们不仅可以捕获和处理异常,还可以主动抛出异常,也就是以类的方式自定义错误的类型和提示信息,这在编程中非常有用,下面我将详细解释主动抛... 目录一、为什么要主动抛出异常?二、基本语法:raise关键字基本示例三、raise的多种用法1. 抛

github打不开的问题分析及解决

《github打不开的问题分析及解决》:本文主要介绍github打不开的问题分析及解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、找到github.com域名解析的ip地址二、找到github.global.ssl.fastly.net网址解析的ip地址三

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

Mysql的主从同步/复制的原理分析

《Mysql的主从同步/复制的原理分析》:本文主要介绍Mysql的主从同步/复制的原理分析,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录为什么要主从同步?mysql主从同步架构有哪些?Mysql主从复制的原理/整体流程级联复制架构为什么好?Mysql主从复制注意

Nacos注册中心和配置中心的底层原理全面解读

《Nacos注册中心和配置中心的底层原理全面解读》:本文主要介绍Nacos注册中心和配置中心的底层原理的全面解读,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录临时实例和永久实例为什么 Nacos 要将服务实例分为临时实例和永久实例?1.x 版本和2.x版本的区别

java -jar命令运行 jar包时运行外部依赖jar包的场景分析

《java-jar命令运行jar包时运行外部依赖jar包的场景分析》:本文主要介绍java-jar命令运行jar包时运行外部依赖jar包的场景分析,本文给大家介绍的非常详细,对大家的学习或工作... 目录Java -jar命令运行 jar包时如何运行外部依赖jar包场景:解决:方法一、启动参数添加: -Xb

C++类和对象之默认成员函数的使用解读

《C++类和对象之默认成员函数的使用解读》:本文主要介绍C++类和对象之默认成员函数的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、默认成员函数有哪些二、各默认成员函数详解默认构造函数析构函数拷贝构造函数拷贝赋值运算符三、默认成员函数的注意事项总结一

MySQL的ALTER TABLE命令的使用解读

《MySQL的ALTERTABLE命令的使用解读》:本文主要介绍MySQL的ALTERTABLE命令的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1、查看所建表的编China编程码格式2、修改表的编码格式3、修改列队数据类型4、添加列5、修改列的位置5.1、把列

Apache 高级配置实战之从连接保持到日志分析的完整指南

《Apache高级配置实战之从连接保持到日志分析的完整指南》本文带你从连接保持优化开始,一路走到访问控制和日志管理,最后用AWStats来分析网站数据,对Apache配置日志分析相关知识感兴趣的朋友... 目录Apache 高级配置实战:从连接保持到日志分析的完整指南前言 一、Apache 连接保持 - 性