当前位置: 首页 > news >正文

OWASP发布10大开源软件风险清单

3月20日,xz-utils 项目被爆植入后门震惊了整个开源社区,2021 年 Apache Log4j 漏洞事件依旧历历在目。倘若该后门未被及时发现,那么将很有可能成为影响最大的软件供应链漏洞之一。近几年爆发的一系列供应链漏洞和风险,使得“加强开源软件(OSS)安全”的呼声越来越高,以维护脆弱的现在数字生态系统。

基于此,OWASP发布了开源软件风险清单TOP 10,旨在解决帮助企业用户更好地解决开源软件组件安全问题,帮助安全从业者更成熟地治理和安全使用OSS。风险清单TOP 10由Endor Labs首创,该公司专注于OSS安全、CI/CD管道和漏洞管理、软件供应链安全等。

传统漏洞管理获取已知漏洞的渠道,CVE漏洞库通常是重点关注来源之一,但越来越多的网安从业者都意识到,已知漏洞是风险的滞后性指标。

为了更好地应对风险,管理开源软件漏洞,网安人必须关注风险的先行指标,以便更快发现特定OSS库、组件和项目之间存在的威胁。

以下OWASP发布10大开源软件风险清单。

1. 已知漏洞

这部分内容涉及已知漏洞的OSS组件,如软件缺陷,这些缺陷通常是软件开发者和维护者无意中引入,然后由社区中的安全研究人员公开披露。

这些漏洞是否可被利用取决于它们在组织和应用程序中的使用环境。虽然这一点可能看起来微不足道,但实际上并非如此——未能为开发者提供这种环境会导致大量辛苦工作、浪费时间、挫败感,以及常常对安全部门产生抱怨。

针对这些风险,美国网络安全与基础设施安全局(CISA)会公布已知被利用漏洞(KEV)目录和漏洞预测评分系统(EPSS)。

组织可以采取措施来减轻已知漏洞OSS组件的风险,例如扫描企业已使用的OSS组件中的漏洞,基于已知利用、利用概率、可达性分析(这可以减少80%的无效发现)等方法来确定优先级。

2. 伪装合法软件包

越来越多的恶意行为者发现,通过伪装成合法维护人员,以看似合法实则恶意的软件包来影响下游企业和用户非常好用。具体来说可以使用多种方法来实现这种攻击途径,例如劫持项目维护者的账户或利用仓库中的漏洞。

他们还可以自愿成为开源社区的维护者,只是为了在将来某个时候发起恶意攻击,最近爆发的XZ Utils事件就是其中的典型例子。攻击者伪装成合法的社区维护人员,利用长达数年的时间在系统中植入了后门。

那么该如何减少上述风险?安全专家建议使用类似微软的(现已捐赠给OpenSSF)安全供应链消费框架(S2C2F)等典型框架。

3. 名称混淆攻击

在名称混淆攻击中,攻击者创建的恶意组件名称与合法的OSS包或组件相似,希望它们会被潜在受害者在无意中下载和使用。这种攻击在CNCF软件供应链攻击目录中也有体现,包括拼写错误、抢注和品牌劫持。当这些恶意的包被带入组织的IT环境时,可能会影响系统和数据的机密性、完整性和可用性(CIA)。

4. 未维护的软件

0SS与常用软件不同,它没有“确定的供应商”,OSS维护者提供的软件是“原样”,这意味着无法保证软件会被维护、更新或持续。Synopsys发布的OSS报告数据显示,85%的代码库超过四年未更新OSS组件,且在两年内没有任何新的开发。

考虑到软件的老化速度极快,新漏洞正在以创纪录的速度出现,许多未能积极更新OSS组件的软件存在极大的不安全性,这点从国家漏洞数据库(NVD)发布的数据中可见一斑。

这也是无法避免的现状。由于OSS主要依靠无偿的志愿者维护,那么其组件不被积极开发、更新、修复缺陷等也在情理之中。即使有一定的维护,可能也存在较大的滞后性,不符合下游企业用户的期望,更不会像供应商那样向下游客户提供漏洞修复的服务级别协议(SLA)。

导致OSS组件未维护的另一个关键因素是,有25%的OSS项目只有一个开发者贡献代码,94%的项目维护者/开发者低于10人。如果一个项目只有一个维护者,风险是显而易见的。考虑到60-80%现代代码库由OSS组成,人们开始意识到当下数字生态系统的相当一部分,甚至我们最关键的系统都运行支持和维护最少的软件上。这也代表潜在的系统风险无比巨大,且很容易被攻击者利用。

处理这种风险的建议包括检查项目的活力和健康状况,如维护者和贡献者的数量、发布频率以及修复漏洞的平均时间(MTTR)。

5. 过时的软件

一个项目正在使用一个过时的组件版本,可能存在低版本的安全风险。据Synopsys发布的报告数据显示,在开源软件领域这种情况是常态,在绝大多数代码库和仓库中都会发生。

另外,许多现代软件应用和项目的依赖关系错综复杂,令人眼花缭乱,并且直接提升了漏洞安全风险。Sonatype和Endor Labs联合发布的《依赖管理现状》指出,95%的漏洞与传递依赖关系有关。

6. 未跟踪的依赖关系

开发者/组织有时未意识到使用了特定的依赖关系或组件的情况,其原因可能是企业没有使用软件组成分析(SCA)等工具来了解他们所使用的OSS软件;或者是没有采用新兴工具如软件物料清单(SBOM)进行检查分析,这些工具为企业提供已使用的软件/组件可见性。

经过SolarWinds和Log4j等事件,网络安全行业深刻意识到,大多数企业的软件资产清单多年来一直是SANS/CIS的关键控制,但仍缺乏全面的软件资产管理,更别提细化到组件/库级别。因此我们更需要SBOM等工具,为企业进一步了解所使用的组件清单,以便打造更安全的软件供应链。

7. 许可和法规风险

许可和法规风险是指组件或项目在实施过程中缺乏相应的授权许可,那么可能会导致下游企业违规使用组件的风险。

OWASP指出,组织需要确保他们对OSS组件的使用符合适用许可条款,不然很有可能因此引发侵犯风险,造成大量财产损失甚至是法律诉讼。这也可能会影响组织的商业目标、并购活动等,因为在其专有产品、服务和产品中可能广泛地使用OSS组件。

组织可以采取措施来减轻这些风险,例如确定他们在软件中使用的组件具有授权,同时当授权许可存在冲突或风险时,需避免使用这类组件,及时规避可能发生的损失。

8. 不成熟的软件

不成熟的软件风险在于并非所有的开源软件都能保持较高的成熟度,这是由开发者和维护者的个人技术能力决定。例如一些OSS项目可能没有应用安全软件开发实践(NIST安全软件开发框架(SSDF)),具体来说可能没有文档、缺乏回归测试、没有审查指南以及其他最佳实践。

另外一个无法回避的现实是很多开发者并不重视安全性,更关注使用性和便捷性。Linux Foundation和哈佛大学的创新科学实验室(LISH)研发后发现,自由和开源软件的开发者投入在代码安全性的比例仅仅只有可伶的2.3%。

企业可以通过一些工具来对开源软件的安全性进行检查,例如OpenSSF发布的Scorecard就可以为Github的OSS组件提供安全性分析,包括安全保护、贡献者的数量、CI测试、模糊测试、维护措施、授权许可等。目前市面上也有其他类似的工具可以实现上述功能。

9. 未经批准的变更

OWASP将未经批准的变更的风险定义为,OSS组件可能发现变化但开发者没有注意到,因此未能及时审查或批准变更的情况。这可能发生在下载链接变化或指向未版本化资源的情况下,甚至是被篡改的不安全数据传输,该风险强调了安全传输的作用。

缓解措施包括使用资源标识符以确保并指向不可变工件,在实际安装和使用组件之前,还可以验证组件的签名和摘要。此外,为了减轻组件在传输中被妥协的风险,组织应使用安全协议来传输和网络流量通信。

10. 依赖关系过小/过大

最后的风险是依赖关系过小/过大,例如开源软件具有很少或大量的功能,而实际上企业只使用了其中的一部分,这通常被称为“软件膨胀”。

在依赖关系过小的例子中,由于代码行数有限,组件变得依赖于上游项目的安全。另一方面,当代码膨胀或代码行数成倍增加时,会引入更多的攻击面和潜在的可利用代码/依赖关系,给企业带来不可知的安全风险,且不符合既定预期。

因此企业应尽可能重新开发内部所需的功能,以此来减轻依赖过小或过大的风险。安全专家也发现,可在云原生容器化环境中利用“安全基础镜像”进行推广,例如Chainguard一直倡导具有有限漏洞甚至没有漏洞的最小加固基础镜像——"安全基础镜像 "。

参考来源:

https://www.csoonline.com/article/2088471/owasp-top-10-risks-list-attempts-to-establish-more-mature-approach-to-open-source-software-consumption.html

相关文章:

OWASP发布10大开源软件风险清单

3月20日,xz-utils 项目被爆植入后门震惊了整个开源社区,2021 年 Apache Log4j 漏洞事件依旧历历在目。倘若该后门未被及时发现,那么将很有可能成为影响最大的软件供应链漏洞之一。近几年爆发的一系列供应链漏洞和风险,使得“加强开…...

大学生前端学习第一天:了解前端

引言: 哈喽,各位大学生们,大家好呀,在本篇博客,我们将引入一个新的板块学习,那就是前端,关于前端,GPT是这样描述的:前端通常指的是Web开发中用户界面的部分,…...

公安机关人民警察证照片采集规范及自拍制作电子版指南

在当今社会,证件照的拍摄已成为我们生活中不可或缺的一部分。无论是办理身份证、驾驶证还是护照,一张规范的证件照都是必需的。而对于公安机关的人民警察来说,证件照片的采集更是有着严格的规范和要求。本文将为您详细介绍公安机关人民警察证…...

使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel

Python插入100万条数据到MySQL数据库 步骤一:导入所需模块和库 首先,我们需要导入 MySQL 连接器模块和 Faker 模块。MySQL 连接器模块用于连接到 MySQL 数据库,而 Faker 模块用于生成虚假数据。 import mysql.connector # 导入 MySQL 连接…...

【备忘录】openssl记录

openssl genrsa -out ca.key 2048 openssl req -x509 -new -nodes -key ca.key -days 10000 -out ca.crt -subj “/CCN/STBeijing/LBeijing/Okubernetes/OUKubernetes-manual/CNkubernetes-ca” openssl genrsa -out etcd-ca.key 2048 openssl req -x509 -new -nodes -key etc…...

hadoop编程之工资序列化排序

数据集展示 7369SMITHCLERK79021980/12/17800207499ALLENSALESMAN76981981/2/201600300307521WARDSALESMAN76981981/2/221250500307566JONESMANAGER78391981/4/22975207654MARTINSALESMAN76981981/9/2812501400307698BLAKEMANAGER78391981/5/12850307782CLARKMANAGER78391981/…...

OpenXR手部跟踪接口与VIVE OpenXR扩展详细解析

随着虚拟现实技术的发展,手部跟踪已成为提高沉浸感和交互性的关键技术。OpenXR标准为开发者提供了一套手部跟踪的扩展接口,特别是针对VIVE设备的特定实现。以下是这些接口和类的详细解释: 1. VIVE.OpenXR.Hand VIVE.OpenXR.Hand 是HTC VIVE…...

慎投!5本On Hold全被剔除!新增9本SCI/SSCI被除名!4月WOS更新

本周投稿推荐 SSCI • 2/4区经管类,2.5-3.0(录用率99%) SCIE(CCF推荐) • 计算机类,2.0-3.0(最快18天录用) SCIE(CCF-C类) • IEEE旗下,1/2…...

华为云CodeArts IDE For Python 快速使用指南

CodeArts IDE 带有 Python 扩展,为 Python 语言提供了广泛的支持。Python 扩展可以利用 CodeArts IDE 的代码补全、验证、调试和单元测试等特性,与多种 Python 解释器协同工作,轻松切换包括虚拟环境和 conda 环境的 Python 环境。本文简要概述…...

C# 截图并保存为图片

在winform开发中,有时会用到截图并保存为图片的时候,这里列了三种保存图片的可能情况。 将窗体截图保存成图片的方式是: Bitmap bit new Bitmap(this.Width, this.Height);//实例化一个和窗体一样大的bitmap Graphics g Graphics.FromImag…...

[html]一个动态js倒计时小组件

先看效果 代码 <style>.alert-sec-circle {stroke-dasharray: 735;transition: stroke-dashoffset 1s linear;} </style><div style"width: 110px; height: 110px; float: left;"><svg style"width:110px;height:110px;"><cir…...

Hive-Sql复杂面试题

参考链接&#xff1a;hive sql面试题及答案 - 知乎 有哪些好的题目都可以给我哦 我来汇总到一起 1、编写sql实现每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数 数据&#xff1a; userid,month,visits A,2015-01,5 A,2015-01,15 B,2015-01,5 A,2015-01,…...

WPS二次开发系列:WPS SDk功能就概览

作者持续关注WPS二次开发专题系列&#xff0c;持续为大家带来更多有价值的WPS开发技术细节&#xff0c;如果能够帮助到您&#xff0c;请帮忙来个一键三连&#xff0c;更多问题请联系我&#xff08;QQ:250325397&#xff09; 作者通过深度测试使用了WPS SDK提供的Demo&#xff0…...

华为OD-C卷-结队编程[200分]

题目描述 某部门计划通过结队编程来进行项目开发, 已知该部门有 N 名员工,每个员工有独一无二的职级,每三个员工形成一个小组进行结队编程, 结队分组规则如下: 从部门中选出序号分别为 i、j、k 的3名员工,他们的职级分别为 level[i],level[j],level[k], 结队小组满…...

连连看游戏页面网站源码,直接使用

可以上传自己喜欢的图片 游戏页面 通关页面 源码免费下载地址抄笔记 (chaobiji.cn)...

在 Kubernetes 1.24 中使用 Docker:配置与应用指南

在 Kubernetes 1.24 中使用 Docker&#xff1a;配置与应用指南 引言 随着 Kubernetes 社区对容器运行时接口&#xff08;CRI&#xff09;的标准化推进&#xff0c;Docker 原生支持在 Kubernetes 1.24 版本中被弃用。然而&#xff0c;许多开发者和组织仍希望继续使用 Docker。…...

Canvas使用详细教学:从基础绘图到进阶动画再到实战(海报生成、Flappy Bird 小游戏等),掌握绘图与动画的秘诀

一、Canvas基础 1. Canvas简介 Canvas是HTML5引入的一种基于矢量图形的绘图技术&#xff0c;它是一个嵌入HTML文档中的矩形区域&#xff0c;允许开发者使用JavaScript直接操作其内容进行图形绘制。Canvas元素不包含任何内在的绘图能力&#xff0c;而是提供了一个空白的画布&a…...

【MATLAB 分类算法教程】_2粒子群算法优化支持向量机SVM分类 - 教程和对应MATLAB代码

分类代码案例2:粒子群算法优化支持向量机SVM分类 - MATLAB完全代码教程 1. 初始化代码2. 读取数据代码3.数据预处理代码4.利用粒子群算法PSO求解最佳的SVM参数c和g代码5.根据最佳的参数进行SVM模型训练代码6.SVM模型预测代码7.准确率分析以及分类结果对比作图代码本文以红酒数…...

Vue2电商前台项目(三):完成Search搜索模块业务

目录 一、请求数据并展示 1.写Search模块的接口 2.写Vuex中的search仓库&#xff08;三连环&#xff09; 3.组件拿到search仓库的数据 用getters简化仓库中的数据 4.渲染商品数据到页面 5.search模块根据不同的参数获取数据展示 &#xff08;1&#xff09;把派发action…...

算法思想总结:链表

一、链表的常见技巧总结 二、两数相加 . - 力扣&#xff08;LeetCode&#xff09; class Solution { public:ListNode* addTwoNumbers(ListNode* l1, ListNode* l2) {//利用t来存进位信息int t0;ListNode*newheadnew ListNode(0);//创建一个哨兵节点&#xff0c;方便尾插List…...

【大模型RAG】Docker 一键部署 Milvus 完整攻略

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配

AI3D视觉的工业赋能者 迁移科技成立于2017年&#xff0c;作为行业领先的3D工业相机及视觉系统供应商&#xff0c;累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成&#xff0c;通过稳定、易用、高回报的AI3D视觉系统&#xff0c;为汽车、新能源、金属制造等行…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

认识CMake并使用CMake构建自己的第一个项目

1.CMake的作用和优势 跨平台支持&#xff1a;CMake支持多种操作系统和编译器&#xff0c;使用同一份构建配置可以在不同的环境中使用 简化配置&#xff1a;通过CMakeLists.txt文件&#xff0c;用户可以定义项目结构、依赖项、编译选项等&#xff0c;无需手动编写复杂的构建脚本…...

Visual Studio Code 扩展

Visual Studio Code 扩展 change-case 大小写转换EmmyLua for VSCode 调试插件Bookmarks 书签 change-case 大小写转换 https://marketplace.visualstudio.com/items?itemNamewmaurer.change-case 选中单词后&#xff0c;命令 changeCase.commands 可预览转换效果 EmmyLua…...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...

前端调试HTTP状态码

1xx&#xff08;信息类状态码&#xff09; 这类状态码表示临时响应&#xff0c;需要客户端继续处理请求。 100 Continue 服务器已收到请求的初始部分&#xff0c;客户端应继续发送剩余部分。 2xx&#xff08;成功类状态码&#xff09; 表示请求已成功被服务器接收、理解并处…...

【版本控制】GitHub Desktop 入门教程与开源协作全流程解析

目录 0 引言1 GitHub Desktop 入门教程1.1 安装与基础配置1.2 核心功能使用指南仓库管理日常开发流程分支管理 2 GitHub 开源协作流程详解2.1 Fork & Pull Request 模型2.2 完整协作流程步骤步骤 1: Fork&#xff08;创建个人副本&#xff09;步骤 2: Clone&#xff08;克隆…...

Excel 怎么让透视表以正常Excel表格形式显示

目录 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总 1、创建数据透视表 2、设计 》报表布局 》以表格形式显示 3、设计 》分类汇总 》不显示分类汇总...

信息系统分析与设计复习

2024试卷 单选题&#xff08;20&#xff09; 1、在一个聊天系统(类似ChatGPT)中&#xff0c;属于控制类的是&#xff08;&#xff09;。 A. 话语者类 B.聊天文字输入界面类 C. 聊天主题辨别类 D. 聊天历史类 ​解析 B-C-E备选架构中分析类分为边界类、控制类和实体类。 边界…...