a. background:
b. past methods and problems:
c. methodology
d. task and performance
现有工作的问题:
npm官方漏洞修复工具audit
NPM内置的工具npm audit通过查询GitHub安全咨询数据库检查有漏洞的依赖项。该工具还可以通过升级依赖项而不违反版本限制来修复漏洞。但是,该工具有几个缺点。
以往的研究忽略了软件开发的复杂性,特别是在需求多元化的情况下,开发人员需要更好的依赖性解析器。在复杂的软件开发中,需要更好的依赖性解析器来确保开发人员实现其目标。
Webpack、Browserify或Parcel
Bundler(如Webpack、Browserify或Parcel)是一个与NPM协同工作的工具,用于管理前端Web应用程序的依赖项。主要任务是将所有依赖项打包成要通过Web加载的文件,而不是本地文件系统。然而,Bundler的功能不止于此,还包括通过各种技术来尽可能减少页面加载时间。减少代码大小是减少页面加载时间的简单方法。不幸的是,NPM容易重复包,从而导致代码大小增加[1]。现代打包器采用了各种技术,从代码压缩到统一相同内容的单个文件。然而,这些技术并不总是可靠的,并且已知会破坏广泛使用的前端框架[2],[3]。
管理状态依赖项
NPM选择同一依赖项的多个版本的能力在使用某些有状态框架时也是无助的。例如,React是一种常用的Web框架,它依赖于内部全局状态来安排视图更新。如果程序依赖于两个传递依赖于React的不同版本的软件包,则很可能会遇到运行时错误或静默失败。避免这个问题的唯一方法是,如果所有软件包作者都小心地将其对React的依赖标记为peer dependency:即由项目中的其他软件包安装的依赖项。然而,无法确定所有第三方依赖项是否正确使用peer dependencies。还很难确定一个软件包是否永远不会被用作依赖项,因此不应使用peer dependencies。What?
我们的关键见解是,所有这些问题都可以被定义为一个更普遍的问题的实例:最优依赖解决,其中优化目标和约束的选择决定了哪些目标的优先级。由于NPM生态系统中存在广泛的目标,本文认为NPM应该允许开发人员定制和结合多个目标。例如,开发人员应该能够指定策略,如“依赖关系不能存在任何重要漏洞”,“不应重复使用任何软件包”,并将这些与“选择满足所有约束条件的最新软件包版本”的基本目标相结合。为了使这种定制和结合的目标成为可能并评估其有效性,我们提出了MAXNPM:一个完整的、可以直接替代NPM的工具,它使开发人员能够结合多个目标。
A. Describing a Dependency Solver with PACSOLVE
PACSOLVE是一种基于约束优化的依赖关系解决器,旨在解决软件依赖项管理领域中的复杂问题。它是一个用Python编写的开源项目,可以自定义和组合多个优化目标和约束条件来优化软件依赖项的选择。
PACSOLVE的目标是提供一种灵活、可扩展的依赖项解决方案,可以满足各种不同类型的开发项目。它支持多种优化目标,如最小化软件包数量、最大化软件包的版本稳定性、最小化安全漏洞数量等。此外,PACSOLVE还支持自定义约束条件,如依赖项版本的范围限制、禁止特定依赖项的使用等。
PACSOLVE的优势在于它使用的是约束优化算法,可以在满足所有约束条件的前提下找到最优解。它还可以解决由于重复软件包、版本冲突和安全漏洞等问题而引起的依赖项选择困难的问题。同时,PACSOLVE还支持与其他依赖项管理工具和构建系统集成,可以方便地应用于各种不同类型的软件项目。
B. The Semantics of PACSOLVE
C. Synthesizing Solution Graphs with PACSOLVE
Max-SMT求解器高效实现PACSOLVE
数据集:Top 1000没有漏洞的npm软件包 和 715个CVSS得分高的包的Vuln715数据集
RQ1: Can MAXNPM find better solutions than NPM when given different optimization objectives?
a.更多减少漏洞 比较npm和PACSOLVE的CVSS得分
b.找到更新的npm包:
c.减少代码膨胀,利用重复的package
RQ2: Do MAXNPM solutions pass existing test suites?
NPM通过, MAXNPM大多数能通过
RQ3: Does MAXNPM successfully solve packages that NPM solves?
成功构建了972/1000个包,有可比性?和npm对比多构建了多少个包?
RQ4*: Does using MAXNPM substantially increase solving time
多增加了2-4s的额外时间
1、相关工作做的不够充分
ICSE 2022 - Demystifying the Vulnerability Propagation and Its Evolutionvia Dependency Trees in the NPM Ecosystem
TSE 2023 - Plumber_Boosting_the_Propagation_of_Vulnerability_Fixes_in_the_npm_Ecosystem 都没有提及