PLUMBER Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem

news2024/9/27 7:14:59

PLUMBER: Boosting the Propagation of Vulnerability Fixes in the npm Ecosystem

1.背景

  • npm是JavaScript编程语言中最大的生态系统,截至2022年1月,它拥有超过180万个第三方软件包。
  • 2017年11月2日的npm快照进行的调查显示,在610,097个包中,其中21.9%直接依赖于易受攻击的包。如果考虑到传递性依赖关系,这种脆弱性对npm生态系统的脆弱性影响可能会显著增加。
  • 我们对npm包的3948个漏洞报告的初步研究发现,在发现漏洞后,60.6%涉及的包及时发布了修复版本。
  • 漏洞修复工具例如 npm audit [6] and Dependabot [7] 来提醒那些直接地或过渡性地依赖于脆弱的软件包版本的项目。
  • 我们对传播漏洞修复的滞后的原因进行了两个观察:大多数包只修复了其最高主要版本中的漏洞,而没有将修复移植到早期的流行版本中。由于缺乏生态系统级依赖图的完整概图,包开发人员几乎没有意识到它们是阻止修复程序传播到其许多下游包的关键因素。

2.Motivation Example

image-20230226104613081

  • 我们将阻止修复在依赖路径上传播的包称为阻塞包。上图中browser-sync和graphql为阻塞包。
  • 从阻塞包到脆弱包的依赖路径被称为阻塞链。 上图中 browser-sync->socket.io ->engine.io为一条阻塞链

3.Introduction

3.1 相关工作

(1)脆弱性对生态系统的影响[2、10、10-16];

(2)减少报告易受攻击的依赖项[17–22]的误报;

(3)易受攻击的程序包更新中的滞后[1,23-28]

[1] 他们进行了一项实证调查,以确定在脆弱的包发布和固定发布之间可能出现的滞后。为了确保快速采用和传播包含修复程序的版本,他们为开发人员和研究人员提供了可操作的建议:开发者要有更好的意识,以便更快地规划依赖项更新。

然而,现有的工作都没有探索生态系统中阻塞包和阻塞链的特征。如何设计一种技术来加速漏洞的修复仍然是一项主要问题。

3.2 目标和挑战

为关键软件包提供可行的补救策略,促进脆弱性修复的传播。

  • 获取最新的漏洞元数据和npm依赖元数据。
  • 了解阻塞链的演化特征及其对脆弱性修复传播的影响。

3.3 方法和结果

Empirical Study:

(RQ1)含有漏洞的包的规模及其对其他项目的影响;

(RQ2)在连续npm快照上的阻塞链的演化特征;

(RQ3)对传播漏洞修复有更好效果的补救策略。

Technique:

(1)对漏洞和npm依赖元数据进行建模,并逐步更新其演化过程;

(2)识别阻碍漏洞修复通过依赖路径传播的关键阻塞链;

(3)分析阻塞链上的软件包的特性,定制修复方案。

Evaluation:

我们应用PLUMBER为最具影响力的阻塞链生成了268份修复报告。47.4%的补救报告得到了积极的反馈。PLUMBER生成的报告通过92,469个依赖路径将漏洞修复程序传播到16,403个活跃的npm项目中。

Contributions:

  • 我们进行了第一个实证研究,以描述软件包在生态系统中阻碍脆弱性修复的传播的情况。
  • 我们开发了PLUMBER工具,通过纠正关键的阻塞链,来促进npm生态系统中脆弱性修复的传播。
  • 一个大规模的漏洞修复传播实验。我们的报告通过92,469个依赖路径将漏洞修复程序传播到16,403个根包中。

4.Empirical Study

Overview

image-20230227101417121

搜集漏洞元数据:GitHub Advisory DB, Snyk Vul nerability DB and NPM Security Advisories.

收集npm依赖项元数据:(V,E,C) V版本集合, E依赖边 (最新版本)E = {pi@va pj@vb|pi@va, pj@vb

V }. C 依赖关系 c(pi@va, pj ) C

识别易受攻击的路径:通过将漏洞元数据映射到npm依赖元数据G =(V,E,C),在集合V中,我们定位了所有带有详细漏洞信息的脆弱包版本。通过可达性分析来识别所有的脆弱路径。

VP模型统计: Table 2

image-20230227102441166

RQ1(阻塞包的规模):

在npm生态系统中阻止漏洞修复传播的包的规模是多少?它们在多大程度上影响了其他项目?

在npm生态系统的356283个活跃根系项目中,有20.0%)中有320个仍然通过1065723个脆弱路径直接或过渡地依赖于这些脆弱包。平均而言,每个根项目都会受到4.4个±7.5漏洞的影响。

image-20230228090108772

在npm生态系统的快照中,有45,148个阻塞包和358,422个阻塞链导致983,336个依赖路径的漏洞修复传播滞后。在有影响力的阻塞软件包和阻塞链上都有明显的中心地位。20%的阻塞软件包和阻塞链影响了绝大多数脆弱的路径。

RQ2(阻塞链的进化):

阻断链在npm生态系统中是如何进化的?它们在npm的生态系统中存在了多久了?

方法:每隔两个月爬取一次npm快照,(a)通过比较快照si(1 < i≤7)与s1的统计数据,我们研究了s1中阻塞链、脆弱路径和受影响的根项目的规模,这些项目在一年的进化过程中进行了修复。(b)通过比较两个连续快照si−1和si的统计数据,我们统计了每两个月间隔内修复的阻塞链、脆弱路径和受影响的根项目的数量。此外,我们还关注了与si−1相比,si是否引入了新的案例。

image-20230228091129135

在2020年8月1日的npm快照中,经过一年的进化,77.0%的阻断链仍然存在。在此期间,受这些阻塞链影响的脆弱路径和根项目的数量分别下降了37.1%和17.3%。9,904个活动根项目通过17,612条脆弱路径仍然引用了9,808个与更高级漏洞捆绑的阻塞链。

RQ3(补救模式):

阻塞链如何从脆弱路径中去除?是否可以提炼出常见的补救模式,以促进漏洞修复的传播?

我们实证研究了在快照s1-s7(在RQ2中收集)和提炼的常见修复模式中,包更新是如何通过包更新进行修复的。我们关注两种类型的阻塞链,它们通过包更新进行了修复,具有传播漏洞修复的显著效果:

Type A。阻断链存在于快照s1-si−1(1<i≤7)中,而在快照si中被修复。

Type B。快照s1-s7中存在的阻塞链,而在进化过程中受其影响的脆弱路径的数量显著减少。

Remediation pattern A. 阻塞包在其最高主要版本中发布了一个新版本,其中升级了直接依赖以过渡引入漏洞修复。通过最终将直接依赖项升级到安全版本,它们最终修复了其最高可用版本中的漏洞。

image-20230228093517214

Remediation pattern B 中间包在其较低的主要版本中发布一个新版本,其中升级直接依赖,使非活动的阻塞包过渡地引入漏洞修复(100%的Type A阻塞链实例)。

image-20230228093534796

Remediation pattern C

image-20230228093801859

这三种模式的补救成本标记如下:模式A<模式B<模式C

我们提炼了三种常见的修复模式及其传播漏洞修复的先决条件。对于由主动阻塞包引起的阻塞链,这种阻塞包可以纠正其最高可用版本(模式A)中的漏洞。对于由非活动阻塞包引起的阻塞链,中间包可以纠正其较低主要版本序列中的漏洞,使非活动阻塞包能够过渡地引入漏洞修复(模式B)。此外,受阻塞链影响的包也可以不弃用不活动的阻塞包,并迁移到其他维护良好的包,以修复漏洞(模式C)。

5、Approach

image-20230301174303414

和DTResolver有区别的点:

识别阻塞链:对于每个脆弱路径,PLUMBER从脆弱包pu开始,迭代计算每个包的安全版本µt,直到阻塞包的安全版本为空。最后,PLUMBER根据通过它们的脆弱路径的数量对识别出的阻塞链进行排序。排名最高的阻塞链被认为是关键的阻塞链,应该进行修复,以使漏洞修复能够传播到大量的包中。

我们的实证研究结果表明,三种策略的补救成本通常遵循:策略A<策略B<策略 C. 因此,对于由积极维护的软件包引起的阻塞链,水管工高度建议了补救策略 A. 对于由非活动阻塞包引起的阻塞链,在中间包(即阻塞包和脆弱包之间的包)被开放版本约束指定的情况下,水管工建议补救策略B,如果它们可以返回到较低版本的序列。否则,水管工将采用补救策略C来迁移非活性的阻塞链。

6、Evaluation

RQ4(PLUMBER的有效性):

水管工制定的补救策略与开发人员是否一致?

方法:选择开发人员已经修复的一些包作为基准,将我们的修复方案和开发人员的修复方案进行比较。

结果:由水管工提出的362种补救策略中,有289种(79.8%)与我们的基准策略一致。对于73种不一致的补救策略,我们的工具通过平衡漏洞修复的补救成本和传播效果来生成建议。

RQ5(补救挑战):

补救npm生态系统中的阻塞链有多具有挑战性?

方法:为了回答RQ5,对于在最近2021年8月1日的npm快照上确定的358,422条阻塞链,我们将它们分为不同的修复难度级别。此外,我们还观察了它们的分布情况,并讨论了补救方面的挑战。

结果:对于影响npm生态系统中大多数脆弱路径的前20%的关键阻断链,其中46.1%的关键阻断链难以修复。它们要么需要迁移非活动的阻塞包,要么需要升级其依赖项的主要版本,以引入漏洞修复,这需要更多的代码更改和测试工作。37.0%的顶级关键阻塞链可以通过所涉及的中间包的反向移植实践进行修复。只有16.9%的顶级关键阻塞链可以通过将主动阻塞包的依赖关系升级到安全的版本来轻松修复。

RQ6(LUMBER的有用性):

水管工能否促进npm生态系统中脆弱性修复程序的传播,并为开发人员提供有用的补救策略?

方法:向开发人员提出Bug report,挑选了前300个关键的阻塞软件包,并人工验证受影响的下游项目是否可以引入相关的漏洞修复程序

结果:47.4%的补救报告收到了来自许多著名的npm项目的积极反馈。

Conclusion:

出发点不同,DTResolver是根据root package构造依赖树,并检测依赖树中的漏洞和一些修复策略。 PLUMBER更注重npm生态系统的平衡,检测npm生态系统的Block Chain,并对包开发人员提出修复建议。

和DTResolver一样,都对npm漏洞的影响进行了研究,DTResolver注重于npm3正确依赖树的构造,Plumber更注重实证研究和漏洞的修复。

DTResolver的DTReme的修复有点突兀,没有前因后果,Plumber的修复是基于他的实证研究的结果,根据开发人员的建议制定的策略。

论文的组织模式和Watchman, Nufix很像,都是先实证研究,将问题进行分类,探索开发人员的修复策略; 再根据我们的工具进行分类检测,并提出修复策略,最后让开发人员确认。

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

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

相关文章

从16K跳槽到20K,最后算下来年薪却还降了,我笑了····

跳槽时薪资涨了 4000&#xff0c;但年薪总包算下来反而变少了&#xff0c;这是怎么回事&#xff1f; 上周&#xff0c;我星球里一个同学就遇到了这么一个问题&#xff0c;薪资涨了、总包降了&#xff0c;而且谈薪时把自己坑了。 作为一个案例&#xff0c;我觉得对很多人可能会…

【项目设计】高并发内存池 (四)[pagecache实现]

&#x1f387;C学习历程&#xff1a;入门 博客主页&#xff1a;一起去看日落吗持续分享博主的C学习历程博主的能力有限&#xff0c;出现错误希望大家不吝赐教分享给大家一句我很喜欢的话&#xff1a; 也许你现在做的事情&#xff0c;暂时看不到成果&#xff0c;但不要忘记&…

数据结构:堆的实现与建堆时间复杂度分析

目录 前言 一.堆的介绍 1.堆的本质 2.堆的分类 二.堆的实现(以小根堆为例) 1.关于二叉树的两组重要结论&#xff1a; 2.堆的物理存储结构框架(动态数组的简单构建) 3. 堆元素插入接口(以小根堆为例) 堆尾元素向上调整的算法接口: 4.堆元素插入接口测试 5.堆元素插入…

【chatgpt】教你如何创建一个Vue脚手架

要创建一个Vue脚手架&#xff0c;您可以使用Vue CLI。Vue CLI是一个命令行工具&#xff0c;可帮助您快速创建Vue项目并提供开发环境。 以下是使用Vue CLI创建Vue脚手架的步骤&#xff1a; 首先&#xff0c;您需要安装Node.js。您可以在Node.js官网上下载和安装它。安装Vue CL…

计网面试题-在浏览器中输入url地址到显示主页的过程

先说答案哈 1DNS解析( DNS解析就是把一个域名转换成一个IP地址。)1&#xff09;、先到浏览器的DNS缓存中查询是否有对应记录&#xff0c;如有则直接返回ip地址&#xff0c;完成解析&#xff0c;如果没有则下一步&#xff1b;2&#xff09;、继续查询本地host文件&#xff0c;…

TIA博途中通过SCL语言实现快速排序的具体方法示例

TIA博途中通过SCL语言实现快速排序的具体方法示例 首先,了解一下快速排序的原理: 排序算法的思想非常简单,在待排序的数列中,我们首先要找一个数字作为基准数。为了方便,我们一般选择第 1 个数字作为基准数(其实选择第几个并没有关系)。接下来我们需要将这个待排序的数列…

Python开发之Python导包的几种方法,自定义包的生成以及导入详解

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell)&#xff0c;随着版本的不断更新和语言新功能的添加&#xff0c;越多被用于独立的、大型项目的开发。 下面介绍python的几种…

网络协议---TCP和UDP

文章目录TCPTCP简介内容TCP三次握手建立连接TCP四次挥手断开连接常见面试题TCP连接资源UDPUDP简介内容TCP TCP简介内容 传输控制协议&#xff08;TCP&#xff0c;Transmission Control Protocol&#xff09;是一种面向连接的、可靠的、基于字节流的传输层通信协议&#xff0c…

MySQL-DQL语句

DQL语句 DQL&#xff08;Data Query Language&#xff09;查询数据 操作查询&#xff1a;select简单的查询&#xff0c;复杂的查询数据库中最核心的语言&#xff0c;最重要的语句使用频繁的语句 指定查询 查询全部 语法&#xff1a; select 全部字段&#xff08;*&#x…

全流程基于最新导则下的生态环境影响评价技术方法及图件制作与案例实践

根据最新生态环境影响评价导则&#xff0c;结合生态环评内容庞杂、综合性强的特点&#xff0c;以既包括陆域、又包括水域的项目为主要案例&#xff0c;对生态环评的具体流程及所需内容进行系统阐述。利用Rstudio、Fragstats等软件分析计算生态环评中所需各种指数&#xff0c;利…

项目管理工具dhtmlxGantt甘特图入门教程(十五):从MS项目导入/导出(下)

这篇文章给大家讲解dhtmlxGantt请求大文件导入的大小限制。 dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表&#xff0c;可满足应用程序的所有需求&#xff0c;是完善的甘特图图表库 DhtmlxGantt正版试用下载&#xff08;qun 764148812&#xff09;https:…

【算法数据结构体系篇class10、11】:二叉树

一、二叉树的先序、中序、后序遍历先序&#xff1a;任何子树的处理顺序都是&#xff0c;先头节点、再左子树、然后右子树中序&#xff1a;任何子树的处理顺序都是&#xff0c;先左子树、再头节点、然后右子树后序&#xff1a;任何子树的处理顺序都是&#xff0c;先左子树、再右…

基于tsfresh包的单类时间序列特征提取

前言 时间序列特征提取包中tsfresh较为流行&#xff0c;但是其官方教程给出的例子是机器人故障的数据集&#xff0c;其中的id列为各组不同的实验。然后我就一直在想能否做单类的&#xff0c;比如电力预测&#xff0c;或者是某一条街道的交通预测&#xff0c;但是翻遍了文档都没…

Linux安装nginx详细步骤

1.安装依赖包//一键安装上面四个依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载并解压安装包//创建一个文件夹 mkdir /usr/local/nginx cd /usr/local/nginx //下载tar包 wget http://nginx.org/download/nginx-1.18.0.tar.gz tar -xvf nginx…

蓝牙调试工具集合汇总

BLE 该部分主要分享一下常用的蓝牙调试工具&#xff0c;方便后续蓝牙抓包及分析。 目录 1 hciconfig 2 hcitool 3 hcidump 4 hciattach 5 btmon 6 bluetoothd 7 bluetoothctl 1 hciconfig 工具介绍&#xff1a;hciconfig&#xff0c;HCI 设备配置工具 命令格式&…

金融行业数据模型

一、Teradata FS-LDM Teradata 公司基于金融业务发布的FS-LDM&#xff08;Financial Servies Logical Data Model&#xff09; 十大主题&#xff1a;当事人、产品、协议、事件、资产、财务、机构、地域、营销、渠道。 1、当事人&#xff08;Party&#xff09; 银行所服务的任…

学习.NET MAUI Blazor(七)、实现一个真正的ChatGPT聊天应用

今天在新闻上看到一条消息&#xff0c;OpenAI已经开放了ChatGPT的接口&#xff0c;也就是GPT-3.5&#xff0c;对比原来的GPT-3&#xff0c;增加了gpt-3.5-turbo、gpt-3.5-turbo-0301两个模型。 gpt-3.5-turbo&#xff1a;使用最新的GPT-3.5模型&#xff0c;并针对聊天进行了优…

和风SDK查询城市ID(保姆级教程)

android studio版本&#xff1a;2021.2.1例程名&#xff1a;hfserachcityid这几天没什么事做&#xff0c;而且我原来那个“项目”因为免费api不能用了&#xff0c;只能改为和风的免费api,但需要申请&#xff0c;而且还要城市ID&#xff0c;玩天气的基本都知道城市ID这个东西&am…

公司章程包括了哪些内容

一、公司章程包括了哪些内容 《中华人民共和国公司法》第11条规定&#xff1a;“设立公司必须依法制定公司章程。公司章程对公司、股东、董事、监事、高级管理人员具有约束力。”明确地强调了公司章程对于公司的重要性&#xff0c;公司章程对于公司而言不但是股东合意达成的协…

葵花8号卫星数据简介与下载笔记

1、葵花8号卫星数据简介JMA于2015年7月7日开始运营Himawari-8&#xff0c;以取代MTSAT-2&#xff08;也称为Himawari-7&#xff09;。 Himawari-9号卫星于2017年3月10日开始后备运行。两颗卫星都位于向东约140.7度的轨道上&#xff0c;并将观测东亚和西太平洋区域15年。 源自Hi…