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

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

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

相关文章

无人机培训机型有哪些?CAAC考证选3类还是4类

无人机培训是一个涵盖多个方面的综合性过程,旨在培养具备无人机操作技能和相关知识的人才。 无人机培训机型 无人机培训通常涵盖多种机型,以满足不同领域和应用场景的需求。常见的无人机培训机型包括: 1. 多旋翼无人机:也称为多…

浏览器漫谈HTML--2.1印象深刻的标签-语义化标签

语义化标签 HTML语义化标签是HTML5引入的一个重要特性 常见的语义化标签&#xff1a; <header>, <nav>, <main>, <article>, <section>, <aside>, <footer> 布局如下 底层实现逻辑&&好处 语义化标签其实底层实现逻辑和…

el-table-column prop值根据数组获取

方法一&#xff1a; 可以给el-table-column添加一个属性&#xff1a;formatter&#xff0c;代码如下&#xff1a; 这里是因为多个列都需要同样的计算&#xff0c;所以使用column.property获取属性&#xff0c;不然可以直接row.属性 方法二&#xff1a; 直接在template scope …

2021-04-22 51单片机玩转点阵

理论就不赘述了,网络上多得很,直接从仿真软件感性上操作认识点阵,首先打开ISIS仿真软件,放置一个点阵和电源与地线就可以开始了;由点阵任何一脚连线到地线,另一边对应的引脚就连接到电源,如图:点击运行看是否点亮?看到蓝色与红色的点表示电源正常但是没有任何亮点,这时对调一下…

数据结构---详解单链表

一、单链表的概念及性质 1、链表的概念 链表是一种物理存储结构上非连续、非顺序的储存结构&#xff0c;数据元素的逻辑顺序是通过链表中的指针链接次序实现的。 我们看上图&#xff0c;一个链表就很像一节节车厢一样&#xff0c;和顺序表不同的是&#xff0c;链表里的每节“…

基于Spring Boot的网上商品订单转手系统设计与实现,LW+源码+讲解

摘 要 传统办法管理信息首先需要花费的时间比较多&#xff0c;其次数据出错率比较高&#xff0c;而且对错误的数据进行更改也比较困难&#xff0c;最后&#xff0c;检索数据费事费力。因此&#xff0c;在计算机上安装网上商品订单转手系统软件来发挥其高效地信息处理的作用&a…

金蝶云星空与聚水潭系统的数据无缝对接案例

金蝶云星空与聚水潭的其他出库单数据集成案例分享 在企业日常运营中&#xff0c;数据的高效流动和准确处理至关重要。本文将重点介绍如何通过轻易云数据集成平台&#xff0c;实现金蝶云星空系统中的其他出库单数据无缝对接到聚水潭系统。本次集成方案名为“金蝶-其他出库单——…

企业级大数据安全架构

安全架构 一、集群访问控制1.1 Kerberos认证机制1.2 Apache Knox 统一访问网关 二、资源授权管理2.1 Apache Ranger 数据授权与管理 三、服务安全保障3.1 LDAP 轻量目录访问协议 四、大数据安全架构 当谈到企业级大数据平台时&#xff0c;安全性是一个至关重要的方面。随着数据…

cv::intersectConvexConvex返回其中一个输入点集,两个点集不相交

问题&#xff1a;cv::intersectConvexConvex返回其中一个输入点集&#xff0c;但两个点集并不相交 版本&#xff1a;opencv 3.1.0 git上也有人反馈了intersectConvexConvex sometimes returning one of the input polygons in case of empty intersection #10044 是凸包嵌套判…

贪心算法day3(最长递增序列问题)

目录 1.最长递增三元子序列 2.最长连续递增序列 1.最长递增三元子序列 题目链接&#xff1a;. - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;我们只需要设置两个数进行比较就好。设a为nums[0]&#xff0c;b 为一个无穷大的数&#xff0c;只要有比a小的数字就赋值…

SpringBoot助力的共享汽车业务优化系统

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

基于STM32的LCD1602显示Proteus仿真设计(仿真+程序+设计报告+讲解视频)

这里写目录标题 1.主要功能0. 资料清单&下载链接资料下载链接&#xff1a;2.仿真设计3. 程序设计4. 设计报告5. 框图 基于STM32的LCD1602显示Proteus仿真设计(仿真程序设计报告讲解视频&#xff09; 仿真图proteus 8.9 程序编译器&#xff1a;keil 5 编程语言&#xff1a…

ArcGIS/QGIS按掩膜提取或栅格裁剪后栅格数据的值为什么变了?

问题描述&#xff1a; 现有一栅格数据&#xff0c;使用ArcGIS或者QGIS按照矢量边界进行按掩膜提取或者栅格裁剪以后&#xff0c;其值的范围发生了变化&#xff0c;如下&#xff1a; 可以看到&#xff0c;不论是按掩膜提取还是进行栅格裁剪后&#xff0c;其值的范围均与原来栅…

CKA认证 | Day1 k8s核心概念与集群搭建

第一章 Kubernetes 核心概念 1、主流的容器集群管理系统 容器编排系统&#xff1a; KubernetesSwarmMesos Marathon 2、Kubernetes介绍 Kubernetes是Google在2014年开源的一个容器集群管理系统&#xff0c;Kubernetes简称K8s。 Kubernetes用于容器化应用程序的部署&#x…

Nat Med病理AI系列|基础模型Virchow在病理学中的应用·顶刊精析·24-11-09

小罗碎碎念 今天是Nature Medicine病理AI系列的最后一篇文章&#xff0c;标题为A foundation model for clinical-grade computational pathology and rare cancers detection。 这篇文章介绍了一个大型病理基础模型Virchow&#xff0c;它在计算病理学领域实现了对常见和罕见癌…

vue3 + element-plus 的 upload + axios + django 文件上传并保存

之前在网上搜了好多教程&#xff0c;一直没有找到合适自己的&#xff0c;要么只有前端部分没有后端&#xff0c;要么就是写的不是很明白。所以还得靠自己摸索出来后&#xff0c;来此记录一下整个过程。 其实就是不要用默认的 action&#xff0c;要手动实现上传方式 http-reque…

多模态数字人AI产品正在革新金融业,解密头部银行、证券公司都在用的AI工具

在人工智能迅猛发展的时代背景下&#xff0c;金融业正迎来一场深刻的变革。 多模态的人工智能&#xff0c;以其独特的魅力&#xff0c;正在重塑金融行业的格局&#xff0c;为金融服务带来前所未有的新想象。从今年以来行业对AI技术的探索与实践中&#xff0c;AIGC 3D数字人多模…

数据仓库还是数据集市?这俩怎么选?

数据仓库和数据集市作为支持决策分析的两种不同方式&#xff0c;根据各自的特点和优势&#xff0c;有不同的应用场景&#xff0c;今天就来探讨下数据集市和数据仓库该怎么选&#xff1f; 一、数据集市和数据仓库对比 1、数据集市与数据仓库的关系&#xff1a; 1&#xff09;数…

2024年数据分析5大趋势

在快速发展和创新的数据分析领域&#xff0c;2024 年有望成为突破性趋势的一年&#xff0c;这些趋势将重新定义企业从数据中提取洞察的方式。 下文将分析2024 年 5 大数据分析趋势&#xff0c;揭示将塑造数据驱动决策未来的工具和策略。 趋势一&#xff1a;人工智能落地将成为…

AI帮你记住所有密码,你敢把隐私交给它吗?

数字时代的密码管理挑战 在这个信息爆炸的数字时代&#xff0c;每个人都面临着前所未有的密码管理挑战。随着我们在网上进行越来越多的活动&#xff0c;从购物到社交&#xff0c;再到网上银行&#xff0c;所需的密码数量也随之激增。每个账户需要独特且复杂的组合&#xff0c;…