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

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

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

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

开源一词最早出现于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%的代码库中,包含过去两年中没有任何开发活动的组建。

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

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

写在最后:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数学建模-典型相关分析

上节回顾 论文:常州大学一等奖淡水养殖… 要进行 pearson 相关系数 画散点图、折线图看是否相关检验正态分布满足上述,利用pearson相关系数 刚开始推导不会没关系,会应用就行,推导过程略,之后学习了后续知识&#xff…

微服务之服务器缓存

Informal Essay By English In the difficult employment situation, we need to set a good goal and then do our own thing 参考书籍:“凤凰架构” 进程缓存(Cache) 缓存在分布式系统是可选,在使用缓存之前需要确认你的系统…

基于时域特征和频域特征组合的敏感特征集,再利用SVM或KNN传统分类器进行轴承故障诊断(python编程,代码有详细注释)

1.文件夹介绍(使用的是CWRU数据集) 0HP-3HP四个文件夹装载不同工况下的内圈故障、外圈故障、滚动体故障和正常轴承数据。 这里以打开0HP文件为例进行展示,creat_data.py是处理原始数据的脚本,负责将原始数据切不重叠割成1024的固…

CSS 实现 Turbo 官网 3D 网格线背景动画

转载请注明出处,点击此处 查看更多精彩内容 查看 Turbo 官网 时发现它的背景动画挺有意思,就自己动手实现了一下。下面对关键点进行解释说明,查看完整代码及预览效果请 点击这里。 简单说明原理:使用 mask-image 遮罩绘制网格&a…

东莞-戴尔R540服务器故障告警处理方法

DELL PowerEdge R540服务器故障维修案例:(看到文章就是缘分) 客户名称:东莞市某街道管理中心 故障机型:DELL R540服务器 故障问题:DELL R540服务器无法开机,前面板亮黄灯,工程师通过…

五笔衰落,PC和OCR惹得祸?

许多人认为五笔输入法的衰落主要因素是败给了拼音输入法,是被拼音输入法给“打残”了,取代了,其实这只是表面原因,笔者认为,其关键因素是PC的衰落和OCR技术的不断改进和发展,理由如下: 1、PC出…

【SQL应知应会】表分区(三)• MySQL版

欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于SQL应知应会专栏,本专栏主要用于记录对于数据库的一些学习,有基础也有进阶,有MySQL也有Oracle 分区表 • MySQL版 前言一、分区表1.非分区表2.分区…

欧姆龙以太网模块如何设置ip连接 Kepware opc步骤

在数字化和自动化的今天,PLC在工业控制领域的作用日益重要。然而,PLC通讯口的有限资源成为了困扰工程师们的问题。为了解决这一问题,捷米特推出了JM-ETH-CP转以太网模块,让即插即用的以太网通讯成为可能,不仅有效利用了…

Pytorch如何打印与Keras的model.summary()类似的输出

1 Keras的model.summary() 2 Pytorch实现 2.1 安装torchsummary包 pip install torchsummary2.2 代码 import torch import torch.nn as nn import torch.nn.functional as F from torchsummary import summaryclass Net(nn.Module):def __init__(self):super(Net, self).__…

linux之Ubuntu系列(四)用户管理 用户和权限 chmod 超级用户root, R、W、X、T、S 软链接和硬链接

r(Read,读取):对文件而言,具有读取文件内容的权限;对目录来说,具有浏览目 录的权限。 w(Write,写入):对文件而言,具有新增、修改文件内容的权限;对目录来说,具有删除、移…

【Mac使用笔记】之 Homebrew

Homebrew更新: brew update && brew upgrade 当出现错误: fatal: couldnt find remote ref refs/heads/master 执行: brew tap --repair Ruby安装: 1、查看当前Homebrew版本: brew --version2、查看当前…

python appium UI 自动化测试框架讨论

目录 前言: 框架共性总结 Auto_Analysis 权限弹窗识别 前言: Python Appium UI自动化测试框架是一种用于测试移动应用程序的工具,它结合了Python编程语言和Appium测试框架的功能。 框架共性总结 1 自动找设备 连接设备 2 自动启 appium …

高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用

查看原文>>>高时空分辨率、高精度一体化预测技术之风、光、水能源自动化预测技术应用 能源是国民经济发展和人民生活必须的重要物质基础。在过去的200多年里,建立在煤炭、石油、天然气等化石燃料基础上的能源体系极大的推动了人类社会的发展。但是人类在使…

微信合并转发的图片如何批量保存

今天遇到一个场景:朋友给转发来了一个合并的聊天记录,里面是几十张图片,希望能打印出来。逐张保存太费手了。下面是批量保存图片的方法: 1、登录PC端微信; 2、将要保存图片的这条合并转发的聊天记录收藏;…

数据结构--线性表以及其顺序存储结构

这里写目录标题 线性表的定义和特征定义特征 案例引入稀疏多项式链表实现多项式相加小结 线性表的类型定义(抽象数据类型)定义格式基本操作小结 线性表的顺序表示和实现实现1顺序存储表示顺序表中元素存储位置的计算 实现2顺序表的优点问题出现结构体表示…

Django项目开发快速入门

Django项目开发快速入门 生成Django项目编写module后台管理系统admin自定义管理页面视图函数使用Django模板 生成Django项目 现在cmd中使用命令安装Django框架 pip install django3.2使用命令生成项目 django-admin startproject DjStore使用命令生成应用 python .\manage.…

安天逆向教程——常用汇编语句

一.汇编基础 二.条件分支 反汇编时更多关注这些条件分支。如果看懂这些条件分支,会对程序的大体逻辑有一个整体的了解。 至于程序里面的细节,有时会省略掉。往往关键的跳转理解了甚至进行一点点的改动,就会使得程序发生翻天覆地的变化。 三…

Android Jetpack Compose多平台用于Android和IOS

Android Jetpack Compose多平台用于Android和IOS JetBrains和外部开源贡献者已经努力工作了几年时间来开发Compose Multiplatform,并最近发布了适用于iOS的Alpha版本。自然地,我们对其功能进行了测试,并决定通过使用该框架在iOS上运行我们的…

排序算法总结

目录 插入排序和希尔排序 堆排序 归并排序 快速排序 桶排序、计数排序、基数排序 这些排序的比较 冒泡排序和选择排序就不说了,直接介绍下面的几种排序算法: 插入排序和希尔排序 插入排序与希尔排序_小白麋鹿的博客-CSDN博客https://blog.csdn.n…

C国演义 [第十二章]

第十二章 打家劫舍题目理解步骤dp数组递推公式初始化遍历顺序 代码 打家劫舍II题目理解步骤递推公式初始化遍历顺序 代码 打家劫舍 力扣链接 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋…