企业拥抱开源的同时,该如何做好风险防范?- 对话新思科技杨国梁

“软件供应链安全”相关文章合集
杨国梁 新思科技软件质量与安全部门高级安全架构师

当前,开源组件已成为软件应用程序中不可或缺的一部分。然而,随着开源软件数量的快速增长,应用领域的不断扩大,随之而来的安全问题也变得愈发严峻。

现如今,使用开源代码进行软件的研发已成为主流。这不仅可以提高开发效率,还将为企业节约大量的时间和人力成本。

开源一词最早出现于1998年,但是开源软件的产生却可以追溯到20世纪80年代的自由软件运动。1984年,自由软件之父美国国家工程院院士Richard Stallman建立起操作系统 GNU,标志着基于“自由软件”思想的操作系统落成,同时也揭开了开源运动的序幕。几年后,Linus的创始人Linus Benedict Torvalds在自由软件运动所提倡的“自由分享”的思想影响下,基于 GNU GPL框架发布了Linux。至此,开源软件开始走向正轨。

近年来,随着云计算、人工智能、大数据等新兴技术的快速发展,越来越多的企业开始在开源的基础上开发和构建软件,从操作系统、浏览器、到企业管理系统、游戏……各种类型的开源软件如雨后春笋般涌现出来。

根据新思科技近日发布的《2020年开源安全和风险分析报告》(OSSRA)显示,2019年,新思科技审计了1253个商业代码库,有99%的代码库都使用到了开源的组件,其中开源在所有代码中的平均占比为70%。可见,开源对于现代的商业代码的渗透率是非常之高。

然而,凡事都有利有弊,开源也不例外。虽然使用开源组件让软件开发效率得到极大提升。但与此同时,随着开源代码使用的越来越多,风险面也在扩大。报告指出,开源组件面临的风险主要包括法务、安全和运维三个方面:

1. 法务:使用开源组件,许可证合规是前提

目前,多数企业在使用开源组件的过程之中,存在一个认识误区,那就是开源组件可以随意使用,且不存在所谓的法律风险。

但实际上,开源组件本质上与其他拥有知识产权类的软件产品一样,受法律条款保护。使用开源组件,可被视为已同意接受该开源组件附随的许可协议,遵守许可协议中规定的条件或限制。反之,如果不遵守开源组件许可协议,则构成对开源组件著作权的侵犯。

新思科技软件质量与安全部门高级安全架构师杨国梁指出,现在,绝大多数开源许可证的法律的官司,都是发生在欧美的高科技制造业之间,因此出海的国内高科技企业需要特别注意开源许可证合规性。

据了解,如今,已有上百万个开源组件对应在2600多种许可证的体系之下,其中有20多种许可证的组件使用最为频繁,这涵盖了98%的开源组件。 而根据开源组件许可证法务条款的宽松度,还可将许可证分为强互惠型、弱互惠型、宽容性三种类别。

在这里插入图片描述

既然有了更为简单的分类法,是不是就意味着可以帮助企业进行更好地开源治理,降低开源风险呢?

“其实,这是远远不够的,企业还要将开源许可协议与使用场景和使用方式结合起来,才能确定使用的开源组件是否存在风险。”杨国梁说道。

同时,他还强调说:“出于某种原因,企业可能会使用到未知组件,这类组件并没有将自己声明在某一种许可证体系之下,这就像一颗定时炸弹,你只能听到倒计时,但是,却不知道什么时候会爆炸。因为原则上来说,组件的作者可以将它声明为任何一种许可证体系,或者直接声明为不允许使用。在2020 OSSRA报告中发现,有33%的被审计代码库中存在未给出任何明确授权或者使用条款的开源代码。”

可以说,保证合规使用开源,不仅要考虑到产品的使用场景、使用方式,还需要查看法律条款,以了解能做什么,不能做什么。这对于开发人员来说是非常复杂的。

据杨国梁介绍,新思科技的Black Duck工具解决了这一问题。该软件可以高效地确认出用户使用到的组件,并将法律条款罗列出来,能够更清楚地给用户提示哪些事情是可以做的,哪些是不能做的。

2. 安全:开源组件存在漏洞

随着开源组件的广泛采用,暴露于安全漏洞的风险也在持续增加。2020 OSSRA报告指出,2018年到2019年期间,含高危漏洞代码库从40%涨到49%,含漏洞代码库从60%涨到了75%。

“情况正变得越来越糟,”杨国梁说道,“安全问题说白了就是时间的游戏,从开源组件中出现BUG开始,到NVD发布漏洞信息,与此同时POC/EXP流出,这时黑客发起攻击,然后在攻击的某个过程中被发现,又过了一段时间漏洞被修复,整个过程都是一个安全的高风险期。”

然而,NVD只是一个漏洞聚合的平台,可能要比漏洞源头出现的时间晚20多天,也就是说要加上这20多天才是整个高安全风险期。因此,及时发现安全漏洞,已成为亟待解决的问题。

在这里插入图片描述
杨国梁介绍说:“BDSA是Black Duck工具增强版的漏洞库。首先,在时效性上,平均比NVD能够早29天披露多种的信息,在漏洞源头出现的4小时之内就能将问题录入到用户的系统中,并发出提醒;其次,在准确度上,CVE-2018某个漏洞刚发布时,受到影响的版本从2.3到2.3.34,2.5到2.5.16,其实,描述的版本是不全的,而BDSA识别出了额外23个受影响的版本;在优先级上,对于安全团队来说,他们不是发现不了问题,有可能是发现的问题太多,不知道优先处理哪一个,BDSA会给出一个更加准确的优先级的排序的信息。此外,在修复建议上,BDSA会给出如何修复、修复到哪个版本,以及哪个版本完全没有漏洞等建议。如果无法修复,将给出规避方案。 ”

在这里插入图片描述

3. 运维:老旧组件缺乏维护

事实上,除了法务和安全风险之外,运维风险也是使用开源组件过程中不可忽视的问题。根据2020 OSSRA报告统计,82%的代码库中,包含已经过期4年以上的组件,88%的代码库中,包含过去两年中没有任何开发活动的组建。

"开源组件从本质上来说是我们的生产工具,”杨国梁表示,“生产工具决定生产力,而生产工具又依赖于它背后的组织来维护。当这些组织出了问题,不能再对这些工具提供维护时,生产力就要大打折扣,这意味着没有人会去解决潜在的漏洞。 ”

最后杨国梁还特别指出,开源软件在发布上市之后,需要持续对其进行监控,出现问题将重新进行治理。

写在最后:

毫不夸张地说,开源软件已经渗透到人们生活的方方面面。但与此同时,我们也看到,开源组件带来的安全风险也在不断增加。

不过,可以预见的是,凭借着多年在软件安全和质量解决方案方面的经验积累,新思科技将帮助越来越多的企业持续提升管理开源风险的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/28845.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见的网络攻击

​ 1.僵木蠕毒 攻击业内习惯把僵尸网络、木马、蠕虫、感染型病毒合称为僵木蠕毒。从攻击路径来看,蠕虫和感染型病毒通过自身的能力进行主动传播,木马则需要渠道来进行投放,而由后门木马(部分具备蠕虫或感染传播能力)构…

Hive概述

Hive 一 Hive基本概念 1 Hive简介 学习目标 - 了解什么是Hive - 了解为什么使用Hive####1.1 什么是 Hive Hive 由 Facebook 实现并开源,是基于 Hadoop 的一个数据仓库工具,可以将结构化的数据映射为一张数据库表,并提供 HQL(Hive SQL)查询…

Python实现HBA混合蝙蝠智能算法优化循环神经网络分类模型(LSTM分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 蝙蝠算法是2010年杨教授基于群体智能提出的启发式搜索算法,是一种搜索全局最优解的有效方法…

Unity游戏源码分享-单车骑行游戏

Unity游戏源码分享-单车骑行游戏 项目地址:https://download.csdn.net/download/Highning0007/88057717

layui会议OA项目数据表格新增改查

文章目录 前言一、后台代码编写1.1 数据表优化1.2 R工具类1.3 UserDao新增改查1.4 Servlet的编写 二、前台页面的编写2.1 userManege.jsp2.2 userManage.js2.3 新增、修改用户共用jsp2.4add、edit的js 三、演示3.1 查询3.2 新增3.3 修改3.4 删除 前言 在上篇博客我们实现了左侧…

Qt|读写ini文件使用QSettings 节键值 设置相对路径

#include <QtWidgets/QApplication> #include <QWidget> #include <QSettings> #include <QString>int main(int argc, char *argv[]) {QApplication a(argc, argv);// Qt中使用QSettings类读写ini文件// QSettings构造函数的第一个参数是ini文件的路径…

I2S 总线接口

I2S(Inter-IC Sound)总线有时候也写作IIS&#xff0c;I2S是飞利浦公司提出的一种用于数字音频设备之间进行音频数据传输的总线。和I2C、SPI这些常见的通信协议一样&#xff0c;I2S总线用于主控制器和音频CODEC芯片之间传输音频数据。因此&#xff0c;要想使用I2S协议&#xff0…

自动化测试(一):网页结构分析与Google翻译2023.7.18爬虫实例

目录 1. 网页分析1.1 静态网页1.2 静态网页的爬取案例1.3 动态网页1.4 Google翻译2023.7.18爬虫实例1.4.1 基于网页分析的Google翻译2023.7.18爬虫实例1.4.2 基于Selenium的Google翻译2023.7.18爬虫实例 1. 网页分析 网页分析即通过检查元素&#xff0c;确定想提取的内容的区域…

【C语言】memcpy,memmove,memcmp,memset函数详解

memcpy,memmove,memcmp,memset函数详解 memcpy函数一、 memcpy函数的定义&#xff1a;二、memcpy函数的功能&#xff1a;三、memcpy函数模拟memcpy注意事项 memmove函数一、memmove函数简介二、memmove函数的模拟1.两种情况2模拟实现 memcmp函数memecmp函数介绍 memset函数mems…

企业UPS不稳定?不用怕,这个技巧简单且容易!

随着技术的不断发展&#xff0c;食品行业中的UPS监控系统变得更加智能化和便捷&#xff0c;使食品生产过程更加安全可靠。 UPS监控在食品行业中扮演着关键的角色&#xff0c;确保电力供应的稳定性对于食品生产和储存过程至关重要。 客户案例 安徽某食品制造公司是一家大型食品…

BI-SQL丨XML

XML SQL Server中&#xff0c;存在一种特殊类型的数据&#xff0c;就是XML数据类型。 可能看到这里&#xff0c;小伙伴都会产生疑惑&#xff0c;XML不是Web语言么&#xff1f;为什么在SQL Server里面也会有XML数据类型&#xff1f; 这个就要从SQL Server的应用开始说起了&am…

如何在Windows 10中启用或禁用缩略图预览

文件资源管理器可以在 Windows 10 中显示文件和文件夹的缩略图或图标。 本教程将向你展示如何在文件资源管理器中为你的帐户、所有用户或Windows 10 中的特定用户启用或禁用缩略图预览。 缩略图预览仅在打开并且选择了中等图标、大图标或超大图标文件夹视图布局时显示。 如果缩…