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

news2024/11/26 8:27:42

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

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

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

开源一词最早出现于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.coloradmin.cn/o/765555.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分页列表缓存,你真的会吗

看了很多关于缓存的文章,其中多级缓存思路,分页列表缓存这些知识点给了我很大的启发性。 写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。 1 直接缓存分页列表结果 显而易见,这是最简单易懂的方…

终点与起点,“玄魂工作室”的最后一篇推文

本文原载于 微信公众号 “VisActor”,https://mp.weixin.qq.com/s/tAjcPT8FjIQ6qbhSNWr2hw 做一个决绝的人 用了一天时间,我手工删除了500多篇原创文章,200多篇转载文章,删除了所有菜单、清空了所有自动回复、修改了公众号简介、…

JS事件及相关操作

JS如何处理事件:(有三种处理方式) this指向事件源 this指向事件源: this指向事件源: 冒泡流是从里向外,一层一层向父级抛,目前只有ie浏览器支持 捕获流是从外向里

2023年7月济南/郑州/深圳DAMA-CDGP数据治理专家认证报名

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

C++ 南科大于仕琪课程

目录 课程信息 7.4 function pointers 7.5 递归函数(Recursive functions) 课程信息 作者:于仕琪(南方科技大学计算机系副教授/opencv中国团队负责人) 视频地址:快速学习C和C,基础语法和优化策略,学了不再怕指针(南科大计算机…

Android事件高级手势处理

原文链接 Android事件高级手势处理 GestureDetector只能帮我们处理并识别一些常用的简单的手势,如点击,双击,长按,滑动(Scroll)和快速滑动(Fling)等,一般情况下&#xf…

js 实现导入导出功能(FileSave.js)

点击导出按钮弹出文件框导出文件&#xff0c;点击导入选择文件获取文件数据&#xff0c;以下我保存的是json。 html&#xff1a; <div class"layui-inline"> <div class"layui-btn-group"><button type"button" class"la…

文心一言 VS 讯飞星火 VS chatgpt (61)-- 算法导论6.4 5题

文心一言 VS 讯飞星火 VS chatgpt &#xff08;61&#xff09;-- 算法导论6.4 5题 五、证明:在所有元素都不同的情况下&#xff0c;HEAPSORT 的时间复杂度是 Ω (nlgn)。 文心一言&#xff1a; 要证明在所有元素都不同的情况下&#xff0c;HEAPSORT 的时间复杂度是 Ω(n log…

音视频H265编码; Socket通信实现N对N连接代码示例

H.265编码和Socket通信是两个不同的概念&#xff0c;它们分别涉及视频编码和网络通信。在实现N对N连接时&#xff0c;您可以将它们结合起来&#xff0c;但要注意每个方面的具体实现。 H.265编码&#xff08;视频编码&#xff09;&#xff1a; H.265编码涉及将视频数据进行压缩…

速腾robosense-sdk配置和使用方法

官方的安装和配置教程https://github.com/RoboSense-LiDAR/rslidar_sdk/ 1.手动下载sdk&#xff0c;下载tar.gz&#xff0c;然后解压缩:Releases RoboSense-LiDAR/rslidar_sdk GitHub 2.个人电脑连接速腾激光雷达后&#xff0c;确保能够ping通。当连接网线后&#xff0c;电…

使用 appium 进行微信小程序的自动化测试

目录 前言&#xff1a; 微信小程序结构 自动化用例的调整 示例代码 后记 前言&#xff1a; 微信小程序是一种流行的移动应用程序&#xff0c;它在移动设备上提供了丰富的功能和用户体验。为了确保微信小程序的质量和稳定性&#xff0c;自动化测试是必不可少的一环。Appiu…

视频融合平台EasyCVR级联后上级平台播放失败的问题排查与优化

EasyCVR视频融合平台基于云边端智能协同架构&#xff0c;具有强大的数据接入、处理及分发能力&#xff0c;平台可提供视频监控直播、云端录像、云存储、录像检索与回看、智能告警、平台级联、云台控制等视频能力与服务&#xff0c;可支持多协议、多类型的海量设备接入与分发。 …

MATLAB数据类型及代码实现

本推文是MATLAB基础与统计实战课程中的S02-1数据类型及代码实现 矩阵(Matrix) MATLAB最基础的数据单位是矩阵。什么是矩阵&#xff1f; 如下图可以看作M行乘以N列的数的组。这就是矩阵最基础的显示 ■区别于其他数据分 析软件或者编程语言的最大一 个特点(如&#xff0c;转…

DOM4j及源码分析

文章目录 DOM4jXML 解析技术原理XML 解析技术介绍 DOM4J 介绍DOM4j 中&#xff0c;获得 Document 对象的方式有三种源码增删改查代码 DOM4j 文档: https://dom4j.github.io/javadoc/1.6.1/ 本地文档: dom4j-1.6.1\docs\index.html XML 解析技术原理 不管是 html 文件还是 x…

OAuth2.0详细介绍与实践(通俗易懂)

一、OAuth2.0介绍 1.1 概述 OAUTH协议为用户资源的授权提供了一个安全的、开放而又简易的标准。与以往的授权方式不同之处是OAUTH的授权不会使第三方触及到用户的帐号信息&#xff08;如用户名与密码&#xff09;&#xff0c;即第三方无需使用用户的用户名与密码就可以申请获…

[Juc进阶]Callable、Future和FutureTask

一、Callable 与 Runnable 先说一下java.lang.Runnable吧&#xff0c;它是一个接口&#xff0c;在它里面只声明了一个run()方法&#xff1a; public interface Runnable {public abstract void run(); }由于run()方法返回值为void类型&#xff0c;所以在执行完任务之后无法返…

多个文件保存位置不同:如何一键批量重命名为相同名称

在日常工作中&#xff0c;我们会经常遇到需要修改文件名称&#xff0c;文件改名方法也是很多种呢&#xff0c;可以手动修改或使用工具批量重命名&#xff0c;一般大家修改文件或文件夹重命名&#xff0c;都是在同一个保存位置&#xff0c;有没有遇到多个文件保存位置不同&#…

抖音账号矩阵系统源码.搭建技术开发分享

技术自研框架开发背景&#xff1a; 抖音账号矩阵系统是一种基于数据分析和管理的全新平台&#xff0c;能够帮助用户更好地管理、扩展和营销抖音账号。 部分源码分享&#xff1a; //计算分页$active_list_all $Video_model->getCount($where);$page_libs new Libs_Pagin…

Android平台如何高效率实现GB28181对接?

技术背景 GB28181协议是一种用于设备状态信息报送的协议&#xff0c;可以在不同设备之间进行通信和数据传输。 在安卓系统上实现GB/T 28181非常必要&#xff0c;GB28181协议实现分两部分&#xff0c;一部分是信令&#xff0c;另外一部分就是媒体数据的编码。 信令主要包括S…

CenterNet Objects as Points 论文学习

论文链接&#xff1a;Objects as Points 1. 解决了什么问题&#xff1f; 目标检测的任务是从图像中检出目标的矩形框。现有的检测方法大多会穷举所有潜在的目标位置&#xff0c;然后做分类。这非常浪费资源、低效率&#xff0c;并且依赖后处理。单阶段方法会在图像上放置大量…