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

相关文章

Android 缓存日志Logcat导出与分析最佳实践

《Android缓存日志Logcat导出与分析最佳实践》本文全面介绍AndroidLogcat缓存日志的导出与分析方法,涵盖按进程、缓冲区类型及日志级别过滤,自动化工具使用,常见问题解决方案和最佳实... 目录android 缓存日志(Logcat)导出与分析全攻略为什么要导出缓存日志?按需过滤导出1. 按

C语言自定义类型之联合和枚举解读

《C语言自定义类型之联合和枚举解读》联合体共享内存,大小由最大成员决定,遵循对齐规则;枚举类型列举可能值,提升可读性和类型安全性,两者在C语言中用于优化内存和程序效率... 目录一、联合体1.1 联合体类型的声明1.2 联合体的特点1.2.1 特点11.2.2 特点21.2.3 特点31.3 联合体的大小1

Linux中的HTTPS协议原理分析

《Linux中的HTTPS协议原理分析》文章解释了HTTPS的必要性:HTTP明文传输易被篡改和劫持,HTTPS通过非对称加密协商对称密钥、CA证书认证和混合加密机制,有效防范中间人攻击,保障通信安全... 目录一、什么是加密和解密?二、为什么需要加密?三、常见的加密方式3.1 对称加密3.2非对称加密四、

MySQL中读写分离方案对比分析与选型建议

《MySQL中读写分离方案对比分析与选型建议》MySQL读写分离是提升数据库可用性和性能的常见手段,本文将围绕现实生产环境中常见的几种读写分离模式进行系统对比,希望对大家有所帮助... 目录一、问题背景介绍二、多种解决方案对比2.1 原生mysql主从复制2.2 Proxy层中间件:ProxySQL2.3

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

python使用Akshare与Streamlit实现股票估值分析教程(图文代码)

《python使用Akshare与Streamlit实现股票估值分析教程(图文代码)》入职测试中的一道题,要求:从Akshare下载某一个股票近十年的财务报表包括,资产负债表,利润表,现金流量表,保存... 目录一、前言二、核心知识点梳理1、Akshare数据获取2、Pandas数据处理3、Matplotl

python panda库从基础到高级操作分析

《pythonpanda库从基础到高级操作分析》本文介绍了Pandas库的核心功能,包括处理结构化数据的Series和DataFrame数据结构,数据读取、清洗、分组聚合、合并、时间序列分析及大数据... 目录1. Pandas 概述2. 基本操作:数据读取与查看3. 索引操作:精准定位数据4. Group

C语言中%zu的用法解读

《C语言中%zu的用法解读》size_t是无符号整数类型,用于表示对象大小或内存操作结果,%zu是C99标准中专为size_t设计的printf占位符,避免因类型不匹配导致错误,使用%u或%d可能引发... 目录size_t 类型与 %zu 占位符%zu 的用途替代占位符的风险兼容性说明其他相关占位符验证示

MySQL中EXISTS与IN用法使用与对比分析

《MySQL中EXISTS与IN用法使用与对比分析》在MySQL中,EXISTS和IN都用于子查询中根据另一个查询的结果来过滤主查询的记录,本文将基于工作原理、效率和应用场景进行全面对比... 目录一、基本用法详解1. IN 运算符2. EXISTS 运算符二、EXISTS 与 IN 的选择策略三、性能对比

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致