新思科技《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

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

Java使用POI-TL和JFreeChart动态生成Word报告

《Java使用POI-TL和JFreeChart动态生成Word报告》本文介绍了使用POI-TL和JFreeChart生成包含动态数据和图表的Word报告的方法,并分享了实际开发中的踩坑经验,通过代码... 目录前言一、需求背景二、方案分析三、 POI-TL + JFreeChart 实现3.1 Maven

MySQL中的MVCC底层原理解读

《MySQL中的MVCC底层原理解读》本文详细介绍了MySQL中的多版本并发控制(MVCC)机制,包括版本链、ReadView以及在不同事务隔离级别下MVCC的工作原理,通过一个具体的示例演示了在可重... 目录简介ReadView版本链演示过程总结简介MVCC(Multi-Version Concurr

关于Gateway路由匹配规则解读

《关于Gateway路由匹配规则解读》本文详细介绍了SpringCloudGateway的路由匹配规则,包括基本概念、常用属性、实际应用以及注意事项,路由匹配规则决定了请求如何被转发到目标服务,是Ga... 目录Gateway路由匹配规则一、基本概念二、常用属性三、实际应用四、注意事项总结Gateway路由

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)

《解读Redis秒杀优化方案(阻塞队列+基于Stream流的消息队列)》该文章介绍了使用Redis的阻塞队列和Stream流的消息队列来优化秒杀系统的方案,通过将秒杀流程拆分为两条流水线,使用Redi... 目录Redis秒杀优化方案(阻塞队列+Stream流的消息队列)什么是消息队列?消费者组的工作方式每

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置

浅析Rust多线程中如何安全的使用变量

《浅析Rust多线程中如何安全的使用变量》这篇文章主要为大家详细介绍了Rust如何在线程的闭包中安全的使用变量,包括共享变量和修改变量,文中的示例代码讲解详细,有需要的小伙伴可以参考下... 目录1. 向线程传递变量2. 多线程共享变量引用3. 多线程中修改变量4. 总结在Rust语言中,一个既引人入胜又可

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon