OWASP TOP10 OSS 风险:开源软件安全指南

OWASP OSS 列表提供了旨在绕过 CVE 目录等滞后指标的建议,并为安全从业者提供了安全使用 OSS 组件的指南。

图片

在最近的一些暴露的漏洞和风险之后,对开源软件 (OSS)的安全和使用方式进行批判性审视的呼声越来越高,特别是 XZ Utils(用于压缩和解压缩 XZ 文件) 事件,揭示了一个后门是如何插入到广泛使用的系统中。

如果没有及时发现,XZ Utils 可能是迄今为止影响最大的软件供应链漏洞之一。尽管它最终没有像 Log4j 那样具有广泛的利用潜力,但它再次敲响了警钟,即现代数字生态系统非常脆弱,需要规范它的使用和保护 OSS 的方式。

为了应对这些事件,网络安全从业人员正在开发一些规范和指南,以帮助完善 OSS 的安全治理和使用方式,包括开放 Web 应用程序安全项目 (OWASP) 中开源软件 (OSS) 的 10 大风险。

OWASP Top 10 最初由 Endor Labs 创建,Endor Labs 是一家软件供应链和应用程序安全公司,专注于 OSS、CI/CD 管道的安全使用和漏洞管理。该项目还得到了paloalto、HashiCorp和花旗银行等行业领导者的支持。

虽然传统上漏洞管理通常以常见漏洞和暴露 (CVE) 列表的形式查看已知漏洞,但人们越来越意识到已知漏洞是风险的滞后指标。

为了完善我们使用开源的方式,需要进行范式转变,以查看风险的领先指标,这些指标可能表明存在与特定开源软件库、组件和项目相关的风险,从整体上考虑,可以帮助更安全地使用开源软件,并减轻漏洞利用的潜在风险。

图片

OWASP的十大OSS开源风险

1: 已知漏洞

本节介绍具有已知漏洞(例如软件缺陷)的 OSS 组件,这些漏洞通常由软件开发人员和维护者无意中引入,然后由社区中的安全研究人员公开披露。

梳理在组织和应用程序中使用这些漏洞组件的上下游关系,表明这些漏洞可能会被利用。虽然这一点可能看起来微不足道,但事实并非如此——未能为开发人员提供信息可能会导致大量额外的工作、时间消耗、挫败感和对安全性的不满。

为了应对这一挑战,我们做出了一些努力,例如 CISA 已知利用漏洞 (KEV) 目录和漏洞利用预测评分系统 (EPSS)。

组织可以采取措施来降低具有已知漏洞的 OSS 组件的风险,例如扫描他们使用的所有 OSS 组件中的漏洞,根据已知漏洞利用、利用概率、可访问性分析(最多可减少 80% 的噪声发现)等方法对发现结果进行优先级排序。

2:合法软件包风险

在十大开源软件风险列表中,下一个是合法软件包风险。恶意行为者意识到破坏合法软件包以影响下游消费者的价值,无论是在组织上还是在个人上。

他们可以使用多种方法来追踪这种攻击媒介,例如劫持项目维护者的帐户或包存储库中的漏洞。

他们也可以自愿成为维护者,只是为了追求他们的邪恶意图。这正是最近 XZ Utils 事件中发生的事情,因为在代码中嵌入后门之前,有人在很长一段时间内冒充合法贡献者。

减轻这种风险的建议包括使用新兴的资源和指导,如Microsoft(现在捐赠给OpenSSF)的安全供应链消费框架(S2C2F),现在业内还有其他几个类似的框架。

3:名称混淆攻击

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

4:未维护的软件

与专有软件不同,开源软件的一个严酷现实是没有“供应商”。这意味着无法保证软件将得到维护、更新或维持。

Synopsys 的 OSS 报告等报告表明,85% 的被评估代码库的 OSS 组件已经过时了四年以上,并且两年内没有任何新的开发。

考虑到软件老化迅速,并且根据年度 NVD 指标,新漏洞正在以创纪录的速度出现,这对于使用未主动更新的 OSS 组件的现代应用程序的安全性来说并不是一个好兆头。

开源软件主要由无偿志愿者提供支持。软件组件可能不会被积极开发或维护,缺陷的修复可能不会发生,或者即使有,也可能不在使用组件的软件消费者所期望的时间表上,也不符合专有供应商关于与下游客户的漏洞修复的 SLA。说到OSS组件,如果你使用它,你就存在这个问题。

另一个导致开源码软件未维护的关键因素是,近25%的开源软件项目只有一个开发人员贡献代码,94%的项目由10个或更少的开发人员维护,正如研究员Chinmayi Sharma在她的出版物 “A Tragedy of the Digital Commons” 中引用的那样,对于那些想要全面了解开源挑战的人来说,这是一本推荐的读物。

这通常也被称为“公交车因素”,本质上是问“如果某某被公交车撞到会有什么影响?如果一个项目只有一个维护者,风险是显而易见的。考虑到 60-80% 的现代代码库是由开源软件组成的,人们开始意识到,我们的数字生态系统的很大一部分,甚至是我们最关键的系统,都在支持和维护不足的软件上运行 — 这代表了重大的系统性风险,可能被利用。

报告中提到的处理此风险的建议包括检查项目的活跃度和健康状况,例如维护者和贡献者的数量、发布频率和即时修复 (MTTR) 漏洞。

5:过时的软件

在这种情况下,尽管可能存在较新的版本和更新,但项目正在使用组件的过时版本。正如 Synopsys 报告中所引用的,这种情况实际上是常态,发生在绝大多数代码库和存储库中。

当然,由于许多现代软件应用程序和项目所具有的复杂而令人眼花缭乱的依赖项列表,这让管理变得复杂。Sonatype和Endor Labs等团体的报告强调了这个问题,后者发表了“依赖管理状态”,表明95%的漏洞与传递依赖关系有关。

6:未跟踪的依赖项

在这种情况下,开发人员/组织不知道他们使用了特定的依赖项或组件。这可能是由于组织没有使用软件组合分析 (SCA) 等工具来了解其 OSS 使用情况,或者没有采用软件物料清单 (SBOM) 等新兴工具,这些工具提供了组织使用或分发的软件中组件的可见性。

这实际上是更广泛地推动 SBOM 和软件供应链安全的一部分,因为业界通过 SolarWinds 和 Log4j 等事件意识到,尽管软件资产库存多年来一直是 SANS/CIS 的关键控制措施,但大多数组织都缺乏全面的软件资产清单。SBOM 希望通过让组织开始处理其作为企业的组件库存来解决这个问题。

7:许可证和监管风险

这种风险是指组件或项目可能缺乏许可,或者可能具有阻碍下游消费者预期用途的许可的情况。
OWASP指出,组织需要确保其对OSS组件的使用符合这些组件的适用许可条款。如果不这样做,可能会导致许可或版权侵权,甚至法律诉讼。

这可能会影响组织的业务目标、并购活动等,因为组织在其专有产品、服务和产品中更广泛地使用 OSS 组件。

组织可以通过确定他们在软件中使用的组件的适用许可以及他们对组件的预期用途来采取措施来降低这些风险。该报告还建议组织避免使用完全没有许可的组件,此外还要确定组件何时应用了多个或冲突的许可证。

8:软件不成熟

并非所有软件都是同时创建的,当然,就成熟度而言,它们都存在一个范围,其中很大原因是维护者的参与程度不同。

某些 OSS 项目可能没有应用安全软件开发实践(例如 NIST 安全软件开发框架 (SSDF) 中引用的实践)。具体示例可能包括没有文档、缺乏回归测试、没有审查指南和许多其他最佳实践。

还有一个令人不安的现实是,许多开发人员对安全性不感兴趣。Linux基金会和哈佛大学创新科学实验室(LISH)所做的研究发现,自由和开源软件开发人员仅花费2.3%的时间来提高代码的安全性。

也有行业的努力和工具可用,如OpenSSF的记分卡,它为Github中的OSS项目提供了一套强大的检查,如分支保护的存在、贡献者/组织的数量、CI测试、模糊测试、维护、许可等等。另一个类似的工作涉及CISA和OpenSSF,被称为 “包存储库安全原则”。

9:未经批准的更改(可变)

OWASP 将这些定义为组件可能在开发人员未注意到、审查或批准更改的情况下进行更改的情况。这可能发生在下载链接更改或指向未版本控制的资源,甚至是被篡改的不安全数据传输的情况下,这强调了安全传输的作用。

建议的操作和缓解措施包括使用资源标识符进行保证,并指向相同的不可变项目。您还可以在实际安装和使用组件之前验证组件的签名和摘要。此外,为了降低组件在传输过程中受到损害的风险,组织应使用安全协议来传输和通信网络流量。

10:依赖项过小/过大

最后,组件可能提供很少或很多功能,其中只有一部分被实际使用。这通常被称为“软件膨胀”。

在尺寸过小的依赖项示例中,由于代码行有限,组件依赖于上游项目以确保安全性。另一方面,如果你的代码膨胀或代码行数呈指数级增长,你最终会带来增加的攻击面和潜在的可利用代码/依赖关系,尽管这些代码实际上并不需要。

该报告建议,在这些情况下,重新开发内部所需的功能,以降低依赖依赖项不足或过大的风险。我们还看到,在云原生容器化环境中,人们正在推动利用 Chainguard 等领导者所宣传的“安全基础镜像”,这些基础镜像是最小强化的基础镜像,漏洞有限甚至没有漏洞。

来源:csoonline

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

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

相关文章

数据转换 | Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法

目录 基本介绍程序设计参考资料获取方式 基本介绍 Matlab基于SP符号递归图(Symbolic recurrence plots)一维数据转二维图像方法 符号递归图(Symbolic recurrence plots)是一种一维时间序列转图像的技术,可用于平稳和非平稳数据集;对噪声具有…

01.如何用DDD重构老项目

学习资料来源:DDD独家秘籍视频合集 https://space.bilibili.com/24690212/channel/collectiondetail?sid1940048&ctype0 文章目录 动机DDD与重构实践重构? 重写从一开始就采用DDD重构步骤1. 添加领域模块2.分离出有价值的代码3.迁移到领域模块4.重复2,3 动机 …

【uni-app】创建自定义模板

1. 步骤 打开自定义模板文件夹 在此文件夹下创建模板文件(注意后缀名) 重新点击“新建页面” 即可看到新建的模板 2. 注意事项 创建的模板必须文件类型对应(vue模板就创建*.vue文件, uvue模板就创建*.uvue文件)

本地部署开源在线即时通讯软件Fiora打造个人私密聊天室

文章目录 前言1.关于Fiora2.安装Docker3.本地部署Fiora4.使用Fiora5.cpolar内网穿透工具安装6.创建远程连接公网地址7.固定Uptime Kuma公网地址 前言 相信大家在聊天时候总是很没安全感,比如在和小姐妹背着男朋友聊一些不能说的坏话,或者背着女朋友和兄…

【开发工具——依赖管理工具——Maven】

1. Maven介绍 Apache Maven 的本质是一个软件项目管理和理解工具。基于项目对象模型 (Project Object Model,POM) 的概念,Maven 可以从一条中心信息管理项目的构建、报告和文档。 对于开发者来说,Maven 的主要作用主要有 3 个: …

bootstrap应用2——计算第n个观测在(or 不在)自助法样本里的概率

#计算第四个观测在自助法样本里的概率 store<-rep(NA,10000) for (i in 1:10000){store[i]<-sum(sample(1:100,repTRUE)4)>0 } #讨论第四个观测 mean(store) #计算第n个观测在自助法样本里的概率 boot <- function(n, N){return(1-(1-1/N)^N) }#计算第n个观测在自助…

基于 GADF+Swin-CNN-GAM 的高创新扰动信号识别模型!

往期精彩内容&#xff1a; Python-电能质量扰动信号数据介绍与分类-CSDN博客 Python电能质量扰动信号分类(一)基于LSTM模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(二)基于CNN模型的一维信号分类-CSDN博客 Python电能质量扰动信号分类(三)基于Transformer的一…

Docker可视化工具 Portainer 安装及配置

文章目录 拉取镜像安装和启动容器访问 Portainer设置密码完后即代表安装完毕安装完成 拉取镜像 rootyx-PowerEdge-R730:~# docker pull portainer/portainer Using default tag: latest latest: Pulling from portainer/portainer Digest: sha256:47b064434edf437badf7337e516…

废品回收小程序搭建,互联网回收行业的特点

随着社会经济的快速发展&#xff0c;人们的生活水平大幅提高&#xff0c;废品、可回收物也在逐年增加&#xff0c;为行业的发展提高了基础。同时&#xff0c;国家对回收行业的扶持力度在不断增加&#xff0c;废品回收市场拥有广阔的发展机遇。对于入局者来说&#xff0c;行业隐…

【JAVA 笔记】08 ch05_program_control_structure

第5章 程序控制结构 程序流程控制介绍 if 分支 switch 分支结构 for 循环控制 while 循环控制 do..while 循环控制 跳转控制语句-break 跳转控制语句-continue 跳转控制语句-return 第5章 程序控制结构 程序流程控制介绍 顺序控制 分支控制 循环控制 if 分支 switch 分支结…

配置elk插件安全访问elk前台页面

编辑els配置文件vim elasticsearch.yml,添加以下配置文件 用elk用户&#xff0c;启动els服务 关闭防火墙&#xff0c;查看els启动是否成功&#xff0c;通过是否启动java进程来判断 或者通过查看是否启动9200和9300端口来判断是否启动 交互模式启动密码配置文件interactive表示交…

vscode通过.vscode/launch.json 内置php服务启动thinkphp 应用后无法加载路由解决方法

我们在使用vscode的 .vscode/launch.json Launch built-in server and debug 启动thinkphp应用后默认是未加载thinkphp的路由文件的&#xff0c; 这个就导致了&#xff0c;某些thinkphp的一些url路由无法访问的情况&#xff0c; 如http://0.0.0.0:8000/api/auth.admin/info这…

第三十章 章节练习商品列表组件封装

目录 一、需求说明 二、技术要点 三、完整代码 3.1. main.js 3.2. App.vue 3.3. MyTable.vue 3.4. MyTag.vue 一、需求说明 1. my-tag 标签组件封装 (1) 双击显示输入框&#xff0c;输入框获取焦点 (2) 失去焦点&#xff0c;隐藏输入框 (3) 回显标签信息 (4) 内…

Zypher Network:全栈式 Web3 游戏引擎,服务器抽象叙事的领导者

近期&#xff0c;《黑神话&#xff1a;悟空》的爆火不仅让 AAA 游戏重回焦点&#xff0c;也引发了玩家与开发者的热议。Web2 游戏的持续成功导致部分 Web3 玩家们的倒戈&#xff0c;对比之下 Web3 游戏存在生命周期短且商业模式难以明确的问题&#xff0c;尤其在当前加密市场环…

STL学习-关联容器-pair数对

一.pair数对 1.pair介绍 pair是一个模板类&#xff0c;使用时引用<utility>文件 #include<utility> pair可将两个value处理为一个元素。C标准库内多处用到了这个结构。尤其容器map、unordered map和unordered multimap就是使用pair来管理其内部元素(key value)…

无纸化办公用什么软件能够最快提高工作效率!

一、无纸化办公 随着信息技术的飞速发展和环保意识的日益增强&#xff0c;无纸化办公(Paperless Office)逐渐成为现代办公的一种重要趋势。 从环保角度来看&#xff0c;传统的纸质办公方式消耗大量的木材等自然资源&#xff0c;造纸过程还会产生一系列的环境污染。据统计&…

分享一个游戏源码下载网站

今天给大家分享个不错的游戏源码下载的网站&#xff0c;可以自己下载搭建游戏&#xff0c;大多数都有视频教程 如果你动手能力不错的话&#xff0c;还可以自己修改代码 可以作为你学习参考。 手里有服务器的朋友还可以搭建在服务器上联机&#xff0c;和朋友们一起感觉还是很…

Linux -- 初识信号

目录 什么是信号&#xff1f; 如何使用信号&#xff1f; 代码&#xff1a; testSig.cc makefile&#xff1a; 验证&#xff1a; 2号信号&#xff1a; 9号信号&#xff1a; 建立对信号的认识&#xff1a; 信号的处理 自定义信号的处理方式&#xff1a; signal 函数…

群控系统服务端开发模式-应用开发-腾讯云上传工厂及七牛云上传工厂开发

记住业务流程图&#xff0c;要不然不清楚自己封装的是什么东西。 一、腾讯云工厂开发 切记在根目录下要安装腾讯云OSS插件&#xff0c;具体代码如下&#xff1a; composer require qcloud/cos-sdk-v5 在根目录下extend文件夹下Upload文件夹下channel文件夹中&#xff0c;我们修…

论文阅读神器:没时间读文献,谷歌AI工具NotebookLM 带你5分钟听懂一篇论文

我是娜姐 迪娜学姐 &#xff0c;一个SCI医学期刊编辑&#xff0c;探索用AI工具提效论文写作和发表。 读文献太慢&#xff0c;新文献根本读不完怎么办&#xff1f;谷歌的AI工具&#xff0c;NotebookLM&#xff0c;带你像听播客一样轻松“听”文献&#xff0c;短短几分钟内抓住论…