On the Impact of Security Vulnerabilities in the npm and RubyGems Dependency Networks
对开源软件的兴趣越来越大,导致了可重用软件库的大型语言特定包发行版的出现,例如npm和RubyGems。这些软件包可能存在漏洞,这些漏洞可能通过显式声明的依赖关系暴露依赖包。本文使用Snyk的漏洞数据库,实证研究了影响npm和RubyGems包的漏洞。我们分析了这些漏洞是如何以及何时被披露和修复的,以及它们的流行程度如何随时间变化。我们还分析了易受攻击的软件包如何暴露其直接和间接依赖于漏洞。我们区分了两种类型的依赖项:通过包管理器分发的包,以及依赖于npm包的外部GitHub项目。我们观察到npm中的漏洞数量正在增加,并且比RubyGems中的漏洞披露得更快。对于这两个软件包发行版,披露漏洞所需的时间随着时间的推移而增加。npm软件包中的漏洞影响了30个软件包版本,而RubyGems软件包中的漏洞影响了59个版本。很大一部分外部GitHub项目都暴露在来自直接或间接依赖的漏洞中。项目和包所暴露的依赖关系漏洞中,分别有33%和40%在所使用依赖关系的相同主要版本范围内的最新版本中得到了修复。我们的研究结果表明,需要更多的努力来更好地保护开源软件包的分发。
2022-03-28 cs.SE
Analysis of Library Dependency Networks of Package Managers Used in iOS Development
本文首次分析了Swift生态系统中CocoaPods、Carthage和Swift PM的库依赖网络演化,发现Swift PM日益普及导致其他包管理器增长放缓,且总依赖数量呈增长趋势但平均数量相对较低。
2023-05-18 cs.SE
On the evolution of technical lag in the npm package dependency network
通过包管理器开发和分发的软件包广泛依赖于其他包。这些依赖关系会定期更新,例如添加新功能,解决错误或修复安全问题。为了充分利用这种类型的重用的好处,开发人员应该通过依赖最新的版本来保持他们的依赖关系。然而,在实践中,这并不总是可能的,并且软件包会落后于其依赖项的最新版本。这种现象在文献中被描述为技术滞后。在本文中,我们对npm依赖网络中的技术滞后进行了实证研究,研究了12万个软件包的140多万个版本的演变,以及这些版本之间的800万个依赖关系。我们将探讨技术滞后如何随着时间的推移而增加,同时考虑到发布类型和包依赖约束的使用。我们还讨论了如何通过依赖语义版本化策略来减少技术滞后。
2018-06-13 cs.SE
Dependency Update Strategies and Package Characteristics
本文通过分析超11.2万个npm包的19个特征构建预测模型,研究依赖更新策略的选择与演变,发现依赖方数量、年龄和发布状态影响最大,且模型比npm默认策略更符合社区决策。
2023-05-25 cs.SE
Leveraging the Crowd for Dependency Management: An Empirical Study on the Dependabot Compatibility Score
本研究实证分析 Dependabot 兼容性分数,发现其因数据不足在83%更新中无法计算且多数分数质量低,提出放大群体输入及个性化指标以预测更新接受,建议机器人提供置信区间并关注测试质量。
2024-03-14 cs.SE
Dependency Practices for Vulnerability Mitigation
本研究分析npm生态系统中450多个漏洞和20多万个受感染包,利用9个特征构建预测模型,识别快速修复漏洞的依赖包,帮助开发者缓解供应链漏洞风险。
2023-10-11 cs.SE
How Deep Does Your Dependency Tree Go? An Empirical Study of Dependency Amplification Across 10 Package Ecosystems
Auburn University(奥本大学)
本研究通过分析10个软件生态系统的依赖放大现象,发现Maven的平均放大率显著高于其他生态系统,揭示了依赖管理对供应链安全的影响。
2025-12-12 cs.SE
Using Answer Set Programming for HPC Dependency Solving
现代科学软件栈已经变得非常复杂,使用许多编程模型和库来利用越来越多的GPU和加速器。包管理器可以使用依赖解决器来减轻这种复杂性,但它们正在达到极限。找到兼容的依赖版本是NP完全的,并且对包兼容性的语义建模模构建时选项、GPU运行时、标志和其他参数是极其困难的。在这个巨大的配置空间中,定义一个“好”的配置是令人生畏的。我们解决这个问题,使用答案集编程(ASP),组合搜索问题的声明模型。我们表明,使用Spack包管理器,ASP程序可以简洁地表达HPC软件栈的兼容性规则,并提供强有力的解决方案的质量保证。使用ASP,我们可以将新的构建与预安装的二进制文件混合在一起,即使在考虑成千上万的软件包时,求解器的性能也是可以接受的。
2022-10-16 cs.SE
CHRONO-RESOLUTION: A Dependency Resolution Dataset at Release Points for npm, PyPI, and crates.io Packages
North Carolina State University(北卡罗来纳州立大学)
本文旨在借助丰富数据集助从业者和研究者分析软件包发布点的生态系统依赖图,提出构建软件生态系统包发布点依赖项解析的方法,融入漏洞数据构建CHRONO-RESOLUTION数据集并发布,以推动相关研究。
2026-07-20 cs.CR cs.SE
Package Managers à la Carte: A Formal Model of Dependency Resolution
University of Cambridge(剑桥大学);Jane Street(简街);Tarides
本文提出Package Calculus,通过形式化缩减展示其能统一包管理器的核心语义,为跨生态系统工具提供理论基础。
2026-07-20 cs.PL cs.SE
Dataset: Dependency Networks of Open Source Libraries Available Through CocoaPods, Carthage and Swift PM
第三方库用于集成常见问题的现有解决方案,并帮助加快开发速度。然而,使用第三方库可能会带来风险,例如这些库中的漏洞。研究包管理器的依赖网络可以让我们更好地理解和减轻这些风险。到目前为止,苹果生态系统中最重要的三个包管理器CocoaPods、Carthage和Swift PM的依赖网络还没有被研究过。我们分析了截至2021年12月所有公开可用的开源库的依赖关系,并编译了一个包含所有三个包管理器的依赖关系网络的数据集。依赖关系网络可用于分析漏洞如何通过传递依赖关系传播。为了便于跟踪易受攻击的库,我们还查询了NVD数据库,并将这些库公开报告的漏洞包含在数据集中。
2022-06-13 cs.SE
Uncovering and Mitigating the Impact of Frozen Package Versions for Fixed-Release Linux
该研究针对固定发布版Linux因镜像源演化产生的生态差距问题,分析Debian生态系统的兼容性与安全问题,提出基于原生镜像的独立依赖环境包管理方法并开发ccenv原型以弥补现有工具不足。
2024-09-12 cs.SE
Refactoring Software Packages via Community Detection from Stability Point of View
随着软件项目的复杂性和规模在现实环境中的增加,维护和创建可维护性和可靠的代码变得更加困难和昂贵。重构被认为是一种增强代码内部结构的方法,以改善许多软件属性,如可维护性。在这篇论文中,讨论了使用社区发现算法重构软件包的主题,重点是软件包稳定性的概念。该算法首先从Java字节码中提取一个包依赖网络,然后使用一个社区发现算法来发现包结构中可能发生的变化。在这项工作中,考虑依赖方向的重要性,而建模包依赖关系与图形的原因也进行了讨论,并证明包的稳定性和模块化的包依赖图之间的关系,显示模块化是如何有利于包的稳定性。为了评估所提出的算法,实时分析的软件包的工具,实现了两个软件系统进行了测试。结果表明,建模包依赖关系与有向图和应用所提出的重构方法,导致更高的增加包的稳定性比无向图建模方法,已在文献中研究。
2018-11-26 cs.SE
Towards Understanding Third-party Library Dependency in C/C++ Ecosystem
第三方库(TPL)经常在软件中重用,以降低开发成本和上市时间。但是,外部库依赖性可能会在主机应用程序中引入漏洞。图书馆的依赖性问题已经引起了相当大的关注。许多包管理器,如Maven,Pip和NPM,被提议用于管理TPL。此外,大量的努力已经投入到研究语言生态系统中的依赖关系,如Java,Python和JavaScript(C/C++除外)。由于缺乏统一的C/C++包管理器,现有的研究对C/C++生态系统中的TPL依赖了解甚少,特别是在大规模的情况下。为了深入理解C/C++生态系统中的TPL依赖,本文收集了现有的TPL数据库、包管理工具和依赖检测工具,总结了C/C++项目的依赖模式,构建了一个全面而精确的C/C++依赖检测器。使用我们的检测器,我们从GitHub上包含24 K C/C++存储库的大型数据库中提取依赖关系。基于提取的依赖关系,我们提供了实证研究的结果和发现,其目的是了解第三方物流的依赖关系的特点。我们进一步讨论了C/C++依赖管理的意义以及未来软件工程研究人员和开发人员在库开发、软件组合分析和C/C++包管理等领域的研究方向。
2022-09-20 cs.SE
Solving Package Management via Hypergraph Dependency Resolution
针对多语言项目跨生态系统依赖难精准表达、外部软硬件依赖隐式无版本的问题,提出基于超图的形式化系统HyperRes,支持数十种包管理器转换与跨生态依赖解析,无需更换包管理器即可适配部署环境。
2025-06-12 cs.PL cs.SE
Vulnerability Propagation in Package Managers Used in iOS Development
本文分析了 Swift 生态系统中漏洞在库依赖网络内的传播机制,发现原生 iOS 语言库影响最大,且多数关键漏洞依赖可通过升级修复,但公开的漏洞代码位置信息通常缺失。
2023-05-17 cs.SE
Breaking the Dependency Chaos: A Constraint-Driven Python Dependency Resolution Strategy with Selective LLM Imputation
Kennesaw State University(肯尼索州立大学);Danovo Energy Solutions(丹诺沃能源解决方案)
本文提出SMT-LLM,通过形式化约束求解替代LLM猜测,利用AST分析和vermin工具确定Python版本,并在PyPI查询前构建约束图以解决版本一致性问题,提升解析效率。
2026-05-12 cs.SE
Modeling Dependency-Propagated Ecosystem Impact of Changes in Maintenance Activities: Evaluating Support Strategies in the PyPI Network
fortiss GmbH(fortiss有限公司);Technical University of Munich(慕尼黑工业大学)
本文提出一种考虑依赖关系的生态系统影响模型,通过PyPI生态系统分析维护活动变化对整体状态的影响,并基于此优先支持包,对比现有支持机制和PageRank基准。
2026-08-18 cs.SE
Are your dependencies code reviewed?: Measuring code review coverage in dependency updates
由于现代软件广泛使用免费的开源软件包作为依赖项,开发人员必须通过频繁的更新定期引入新的第三方代码。然而,如果不对每个传入的更改进行适当的审查,易受攻击的代码和恶意代码就可以通过这些依赖项潜入代码库。本研究的目标是帮助开发人员通过测量更新中的代码更改是否通过了代码审查过程,安全地接受依赖更新。我们实现了Depdive,这是一个更新审计工具,用于Crates.io,npm,PyPI和RubyGems注册表中的包。Depdive first(i)标识更新中无法追溯到软件包的源存储库的文件和代码更改,即,\textit{phantom artifacts} ;然后(i i)测量更新中的改变的哪一部分(不包括幻影工件)已经通过代码审查过程,即,\textit{code review coverage}。使用Depdive,我们提出了一个实证研究,在最近十次更新的最下载的1000个软件包在四个注册表。我们通过维护者协议调查进一步评估了我们的结果。我们发现更新通常只进行部分代码审查(52.5%的时间)。此外,在我们的数据集中,只有9.0%的软件包的所有更新都经过了完全的代码审查,这表明即使是最常用的软件包也会在软件供应链中引入未经审查的代码。我们还观察到,更新要么倾向于具有高\textit{CRC},要么倾向于具有低\textit{CRC},这表明在谱的另一端的包可能需要一组单独的处理。
2022-11-07 cs.SE
Comparison of PBO solvers in a dependency solving domain
Linux包管理器必须处理用户需要安装的包的依赖关系和冲突。作为一个NP完全问题,这是一个很难解决的问题。在这方面,采取了若干办法。Apt-pbo是一个基于apt项目的包管理器,它将依赖解决问题编码为伪布尔优化(PBO)问题。本文比较了不同的PBO求解器和他们的有效性解决依赖求解问题。
2010-07-07 cs.LO cs.SE
SMTpip: Interpreter-Aware SMT-Based Dependency Conflict Resolution for Restoring Python Source-Code Executability
University of Windsor(温莎大学);University of Waterloo(滑铁卢大学)
本文提出SMTpip,一种感知解释器的Python依赖冲突解决技术,通过将约束编码为SMT公式求解,实现比pip、Conda等工具更快的约束一致环境生成,提升Python源码可执行性恢复效率。
2026-08-18 cs.LO cs.SE
PatchRisk: Forecasting Future Vulnerability Exposure in Open-Source Dependency Networks
Augustana College(奥古纳学院)
针对开源依赖网络中的未来传递性漏洞暴露预测问题,提出防泄漏基准PatchRisk,并验证HistoryGraph特征在时间测试下显著提升AUPRC。
2026-10-22 cs.CR cs.SE
What's in a Package? Getting Visibility Into Dependencies Using Security-Sensitive API Calls
North Carolina State University(北卡罗来纳州立大学);Endor Labs
本文提出通过调用图分析构建生态系统安全敏感 API 列表,并以 Java 实现,用于比较功能相似包的安全风险;110 人调查显示过半开发者愿意使用该信息选择依赖。
2026-10-27 cs.CR cs.SE
Skills Are Not Islands: Measuring Dependency and Risk in Agent Skill Supply Chains
Peking University(北京大学);Zhongguancun Laboratory(中关村实验室)
提出智能体技能供应链(ASSC)概念,设计SkillDepAnalyzer工具从自然语言中提取依赖关系,在超143万技能上揭示四种结构模式和安全风险,建议类型化依赖清单和风险预警审计。
2026-07-02 cs.AI cs.SE
A Longitudinal Study of Dependency Reclassifications in JavaScript Projects
KTH Royal Institute of Technology(皇家理工学院);Université de Montréal(蒙特利尔大学)
本研究探讨JavaScript项目中开发者如何随时间重新分类依赖,发现79.1%的项目存在依赖重新分类,其中97.2%的项目曾移除依赖,38.0%的项目进行角色重新分配,且部分项目后期会再次引入或切换角色。
2026-10-19 cs.SE
Understanding and Detecting Peer Dependency Resolving Loop in npm Ecosystem
本文首次系统研究 npm 生态中的 PeerSpin 无限循环问题,提出基于 Node-Replacement-Conflict 的检测技术并开发 PeerChecker 工具,在 NPM 全生态中发现 5,662 个包受影响,并开源全部实现与数据。
2025-05-20 cs.SE
Session-based Social and Dependency-aware Software Recommendation
随着现代软件复杂性的增加,社会化协作编码和开源软件包复用越来越普遍,从而大大提高了开发效率和软件质量。但是,开放源码软件包的爆炸式增长使开发人员面临信息超载的挑战。虽然这可以通过传统的推荐系统来解决,但是它们通常不考虑社交编码的特定约束,例如开发者之间的社交影响和软件包之间的依赖关系。在本文中,我们的目标是建立模型的动态利益的开发者与社会影响和依赖约束,并提出了基于会话的社会和依赖意识的软件推荐(SSDRec)模型。该模型将递归神经网络(RNN)和图注意力网络(GAT)集成到一个统一的框架中。一个RNN被用来模拟开发人员在每个会话中的短期动态兴趣,两个GAT被用来分别捕获来自朋友的社会影响和来自依赖软件包的依赖约束。在真实世界的数据集上进行了大量的实验,结果表明,我们的模型显着优于竞争对手的基线。
2022-03-08 cs.IR cs.SE
Insecure Ingredients? Exploring Dependency Update Patterns of Bundled JavaScript Packages on the Web
Fraunhofer FKIE(弗劳恩霍夫应用研究促进协会FKIE);University of Bonn(波恩大学)
本文提出Aletheia方法,通过剽窃检测算法分析JavaScript捆绑,发现依赖更新行为,揭示5%-20%的域名在16周内更新依赖,且捆绑包更新速度更快,但少数供应商可能主导更新。
2026-01-23 cs.CR cs.SE
Learning Embeddings of Directed Networks with Text-Associated Nodes---with Applications in Software Package Dependency Networks
University of Southern California(南加州大学);University of California, Berkeley(加州大学伯克利分校)
网络嵌入由网络中每个节点的矢量表示组成。它的有用性已经在许多现实世界的应用领域,如社交网络和Web网络中显示。具有与每个节点相关联的文本的有向网络,例如软件包依赖性网络,是常见的。然而,据我们所知,它们的嵌入迄今尚未被专门研究。在本文中,我们提出了PCTADW-1和PCTADW-2,两个算法的基础上神经网络,学习嵌入有向网络与文本与每个节点。我们创建了两个新的节点标记的网络:两个流行的GNU/Linux发行版Debian和Fedora中的包依赖网络。我们的实验表明,我们的算法产生的嵌入导致节点分类的质量比这两个网络上的各种基线更好。我们观察到在软件包依赖网络的网络嵌入中存在系统的类比(类似于词嵌入中的类比)。据我们所知,这是第一次在网络和文档嵌入中观察到这种系统性的类比。我们进一步证明了这些网络嵌入可以新颖地用于更好地理解软件属性,如软件的开发过程和用户界面等。
2020-11-26 cs.LG cs.SE cs.SI
Tracing Vulnerabilities in Maven: A Study of CVE lifecycles and Dependency Networks
本文结合 Maven 依赖图分析 3,362 个 CVE 生命周期、GitHub 指标与维护者响应时间,揭示“先发布后修补”趋势及影响风险包的关键因素。
2025-02-16 cs.SE
License Incompatibilities in Software Ecosystems
当代软件的特点是重用组件,这些组件被声明为依赖关系,并从包管理器/注册中心接收,如NPM,PyPI,RubyGems,Maven Central等。在本文中,我们研究了来自七个软件包注册表(Cargo,Maven,NPM,NuGet,Packagist,PyPI,RubyGems)的所有组件之间的许可证使用和许可证不兼容性,并对GNU Affero通用公共许可证(AGPL)引起的许可证不兼容性进行了更深入的调查。我们发现,不同生态系统之间使用的许可证的相对数量不同(MIT和Apache等许可证最常见),直接许可证不兼容的数量从Cargo的2.3%到PyPI的20.8%不等,只有少量的直接许可证不兼容是由AGPL许可证引起的(最大值)。PyPI中为0.04%),但高达6.62%的Maven包违反了间接依赖的AGPL许可证。我们的研究结果表明,重用PyPI或Maven软件包的应用程序面临许可证不兼容的可能性并不太大,这可能意味着应用程序必须在分发时开源(PyPI),或者一旦它们作为Web应用程序公开(Maven)。
2022-03-03 cs.SE
Flexible and Optimal Dependency Management via Max-SMT
针对NPM依赖求解器贪心策略导致的版本滞后、依赖臃肿、漏洞修复不佳等问题,提出基于Max-SMT的可定制依赖求解框架PacSolve,构建替代工具MaxNPM,在漏洞修复、版本新旧、依赖数量上均优于NPM。
2023-08-24 cs.SE
Evolution of ROOT package management
ROOT是一个庞大的代码库,具有一组复杂的构建时依赖关系; ROOT的“核心”和全面部署之间的编译时间有很大的差异。我们目前的内部ROOT包和外部包的“延迟构建”的结果。这使得能够提供一个“轻量级”的ROOT核心,随后通过构建额外的模块来扩展ROOT的功能。作为这项工作的一部分,我们改进了将ROOT代码分离为具有最小依赖性的不同模块和包。这种方法为用户提供了更好的灵活性,并且可以组合各种构建功能,而无需从头开始重新构建。依赖性是软件中,特别是HEP软件生态系统中常见的问题。我们想讨论工件管理(“延迟安装”)系统的改进,作为“依赖地狱”问题的解决方案。HEP软件栈通常由多个具有依赖关系的子项目组成。开发模式往往是分散的,独立的和不连贯的子项目。我们认为,软件的设计应利用现有的其他软件组件,或已设计和实施用于其他地方的软件组件,而不是“重新发明轮子”。在我们的贡献中,我们将介绍我们的方法与一组示例和用例一起ROOT的工件管理系统。
2019-06-11 cs.SE
Understanding and Remediating Open-Source License Incompatibilities in the PyPI Ecosystem
本文对 PyPI 生态系统的许可证不兼容问题进行了大规模实证研究,揭示了其普遍性及传递依赖带来的修复挑战,并提出了基于 SMT 求解器的 SILENCE 方法,以最小成本自动推荐修复方案,已在真实软件包中验证有效。
2023-08-11 cs.SE
Analyzing C/C++ Library Migrations at the Package-level: Prevalence, Domains, Targets and Rationals across Seven Package Management Tools
本文通过分析 19,943 个 C/C++ 项目构建首个库迁移数据集,系统研究了 C/C++ 库迁移的普遍性、领域、目标与理由,并与 Python、JavaScript、Java 进行对比,揭示了 C/C++ 特有的迁移模式与依赖管理需求。
2025-07-04 cs.SE
Possible Directions for Improving Dependency Versioning in R
R最强大的功能之一是它的贡献代码基础设施。内置的包管理器和补充存储库为代码的开发和交换提供了一个很好的系统,并且在平台向当今统计计算的事实标准发展的过程中发挥了重要作用。然而,CRAN和其他存储库上的软件包数量的增加超出了预期,并揭示了当前设计的一些局限性。其中一个问题是基础设施中普遍缺乏依赖性版本控制。本文更详细地探讨了这个问题,并建议其他开源社区采取的方法也适用于R。定义了三个用例来解决这个问题,并说明了如何改善包管理的这一方面可以提高可靠性,同时支持R社区的进一步发展。
2013-11-01 cs.MS cs.SE stat.CO
Cryptographic Registry Provenance: Structural Defense Against Dependency Confusion in AI Package Ecosystems
Mashin, Inc.(Mashin公司)
提出加密注册表溯源系统,通过注册表身份签名、双重签名模型和权威命名空间绑定三层结构防御依赖混淆攻击。
2026-05-26 cs.AI cs.CR cs.SE
On the Effect of Transitivity and Granularity on Vulnerability Propagation in the Maven Ecosystem
重用软件库是现代软件工程的支柱。到2022年,平均每个Java应用程序依赖于40个第三方库。依赖这些库会使项目暴露于潜在的漏洞,并可能使应用程序及其用户处于危险之中。不幸的是,对软件生态系统的研究表明,受此类漏洞影响的项目数量正在增加。以前的调查通常会根据依赖关系级别来推断依赖关系,但我们认为这会大大增加受影响项目的实际数量。在这项工作中,我们研究了传递性和粒度对Maven生态系统中漏洞传播的影响。在我们的研究方法论中,我们收集了3 M最新Maven软件包的大型数据集。我们获得了这个数据集的完整的可传递依赖集,构建了整个程序调用图,并进行了可达性分析。这种方法允许我们识别实际上受到使用易受攻击的依赖关系影响的Maven包。我们的实证结果表明:(1)当且仅当所有的传递依赖都被考虑时,我们的数据集中大约1/3的包被识别为脆弱的。(2)只有不到1%的软件包在其依赖项中具有到易受攻击代码的可达调用路径,这远远低于基于依赖项的简单分析。(3)限制所解析的依赖关系树的深度可能是减少昂贵的细粒度(脆弱性)分析的计算时间的有用技术。我们讨论了我们的工作的影响,并为研究人员和从业人员提供可操作的见解。
2023-01-19 cs.SE
Dependencies that Bundle Code and Execution
KTH Royal Institute of Technology(皇家理工学院)
研究应用程序依赖关系,提出LIBCACHE系统,通过包注册表分发依赖项的执行缓存,与编译代码一同作为一等工件,评估显示其加速应用启动,证明执行缓存可分发及合并缓存可扩大启动覆盖范围。
2026-07-07 cs.SE
An Empirical Study of Yanked Releases in the Rust Package Registry
Cargo是Rust的软件打包管理器,它提供了一个yank机制来支持版本级别的弃用,这可以防止软件包依赖于yanked release。大多数先前的研究集中在代码级(即,弃用的API)和包级弃用(即,已弃用的包)。然而,很少有研究关注发布级的弃用。在这项研究中,我们调查了yank机制的使用频率和使用方式,其使用背后的原理,以及在Cargo生态系统中采用yanked release。我们的研究表明,Cargo中9.6%的包裹至少有一次被猛拉释放,并且从2014年到2020年,猛拉释放的比例不断增加。软件包所有者出于其他原因而不是撤回有缺陷的版本,例如修复不遵循语义版本控制的版本或指示软件包被删除或替换。此外,我们发现46%的软件包直接采用了至少一个yanked版本,并且yanked版本通过依赖网络传播,这导致生态系统中1.4%的版本具有未解决的依赖关系。
2022-01-27 cs.SE
PyTrim: A Practical Tool for Reducing Python Dependency Bloat
Athens University of Economics(雅典大学经济学院);Business University of Athens(雅典商学院)
PyTrim是一种自动化减少Python项目依赖膨胀的工具,通过动态分析和模块化设计提高依赖检测准确性,并已成功应用于多个开源项目。
2026-02-20 cs.SE
Solving package dependencies: from EDOS to Mancoosi
Mancoosi(管理开源基础设施的复杂性)是一个由欧盟资助的正在进行的研究项目,旨在解决与相互依赖的软件组件的“升级问题”相关的一些挑战,Debian软件包是其中的原型示例。Mancoosi是EDOS项目的自然延续,该项目已经为Debian和其他GNU/Linux发行版的发行版范围的质量保证提供了工具。该项目背后的财团由几个欧洲公共和私人研究机构以及来自欧洲和南美洲的一些商业GNU/Linux发行版组成。Debian由一小群Debian开发人员代表,他们在相关大学的队伍中工作,以推动和整合Debian的成果。本文介绍了EDOS在依赖管理方面的相关成果,并概述了Mancoosi项目及其目标,特别关注Debian的潜在好处。
2008-11-21 cs.SE
Not All Dependencies are Equal: An Empirical Study on Production Dependencies in NPM
现代软件系统通常是通过利用其他人以库和包的形式编写的代码来构建的,以加速其开发。虽然使用第三方软件包有很多好处,但软件项目往往依赖于大量的软件包。因此,开发人员面临着通过保持项目依赖性的最新和无安全漏洞来维护项目依赖性的艰巨挑战。然而,在生产环境中,项目依赖关系会对项目的安全性构成威胁,这种情况有多频繁?我们使用Node Package Manager(npm)对100个JavaScript项目进行了实证研究,以量化项目依赖关系发布到生产环境的频率,并分析其特征及其对安全性的影响。我们的结果表明,只有不到1%的已安装依赖项被发布到生产环境。我们的分析表明,软件包的功能不足以决定它是否会被发布到生产环境。事实上,59%的已安装依赖配置为运行时依赖,并没有在生产中使用,而28.2%的依赖配置为开发依赖在生产中使用,揭穿了依赖管理的两个常见假设。调查结果还表明,大多数安全警报针对的是生产中未使用的依赖项,这使得它们极不可能对软件的安全性构成风险。我们的研究揭示了依赖管理更复杂的一面:并非所有的依赖都是平等的。生产中使用的安全性对安全性暴露更敏感,应优先考虑。然而,当前的工具在识别生产依赖性方面缺乏适当的支持。
2022-08-29 cs.SE
EvidenT: An Evidence-Preserving Framework for Iterative System-Level Package Repair
Nankai University(南开大学);Microsoft(微软);Haihe Laboratory of Information Technology Application Innovation(海河信息技术应用创新实验室);Key Laboratory of Data and Intelligent System Security, Ministry of Education(教育部数据与智能系统安全重点实验室);Tianjin Key Laboratory of Software Experience and Human Computer Interaction(天津市软件体验与人机交互重点实验室);Tsinghua University(清华大学)
本文提出EvidenT框架,通过证据管理与工具执行解耦,解决系统级包修复中的依赖和环境配置问题,实验显示其在RISC-V包修复中表现优异,且在不同架构上具有良好的通用性。
2026-05-09 cs.SE
Demystifying the Vulnerability Propagation and Its Evolution via Dependency Trees in the NPM Ecosystem
具有丰富功能的第三方库促进了Node.js软件的快速开发,但也带来了新的安全威胁,即可能通过依赖关系引入漏洞。特别是,这些威胁可能会被传递依赖性过度放大。现有的研究要么考虑直接依赖,要么基于可达性分析推理传递依赖,忽略了NPM特定的依赖解决规则,导致错误解决的依赖。因此,进一步的细粒度分析,如脆弱性传播及其在依赖关系中的演变,无法大规模精确地进行,也无法为依赖关系中的脆弱性得出全生态系统的解决方案。为了填补这一空白,我们提出了一种基于知识图谱的依赖关系解析,它将依赖关系的依赖关系解析为树(即,依赖关系树),并调查了大规模依赖关系树中漏洞的安全威胁。我们首先构建了一个完整的依赖-脆弱性知识图谱(DVGraph),它捕获了整个NPM生态系统(超过1000万个库版本和6000万个良好解析的依赖关系)。在此基础上,我们提出DTResolver静态和精确地解决依赖树,以及传递的漏洞传播路径,通过考虑官方的依赖解决规则。在此基础上,我们对依赖树中的脆弱性传播及其演变进行了全生态系统的实证研究。我们的研究揭示了许多有用的发现,我们进一步讨论了不同利益相关者减轻NPM脆弱性影响的经验教训和解决方案。例如,我们为NPM包实现了一个基于依赖树的漏洞修复方法(DTReme),并且获得了比官方工具(npm审计修复)更好的性能。
2022-02-09 cs.SE
An Empirical Study of Vulnerable Package Dependencies in LLM Repositories
本文实证分析 52 个开源 LLM 的第三方依赖漏洞及维护活动,并与 Python 生态系统比较,揭示漏洞披露滞后和配置文件普遍含脆弱依赖的问题。
2025-08-29 cs.CR cs.SE
FIKA: Expanding Dependency Reachability with Executability Guarantees
Université de Montréal(蒙特利尔大学);KTH Royal Institute of Technology(皇家理工学院)
FIKA通过生成可执行代码验证第三方库调用点的可达性,提升依赖管理精度,实验显示其在八个项目中覆盖率达75%以上,优于静态分析工具Semgrep。
2026-09-05 cs.SE
Exploring the SECURITY.md in the Dependency Chain: Preliminary Analysis of the PyPI Ecosystem
Faculty of Information and Communication Technology, Mahidol University(玛希隆大学信息通信技术学院);Graduate School of Science and Technology, Nara Institute of Science and Technology (NAIST)(奈良先端科学技术大学院大学理工学研究科);Graduate School of Information Science and Technology, The University of Osaka(大阪大学情报理工学研究科)
本研究分析了PyPI生态中SECURITY.md文件对依赖管理的影响,发现其与更模块化和功能丰富的项目相关,促进了主动依赖管理。
2025-11-27 cs.SE
Update from Hell: Can Coding Agents Survive Hidden Breakage in Dependency Upgrades?
Monash University(莫纳什大学);Peking University(北京大学);Microsoft(微软)
本文推出含203项真实依赖升级任务的DEPBENCH基准,评估主流编码智能体后发现其仅解决51.2%任务,凸显当前智能体能力与软件维护需求的差距。
2026-09-01 cs.SE
I depended on you and you broke me: An empirical study of manifesting breaking changes in client packages
本文实证研究 npm 生态中依赖更新引发的破坏性变更,量化其对客户端包构建的影响及恢复方式,发现非主版本更新仍会造成显著破坏。
2023-01-11 cs.SE
LLMs as Packagers of HPC Software
Lawrence Livermore National Laboratory(劳伦斯利弗莫尔国家实验室)
本文提出端到端框架 SpackIt,结合仓库分析、示例检索与诊断反馈迭代优化,将 HPC 软件 Spack 配方自动生成的安装成功率从 20% 提升至 80% 以上。
2025-11-07 cs.AI cs.DC cs.SE
Secure or Suspect? Investigating Package Hallucinations of Shell Command in Original and Quantized LLMs
North Carolina State University(北卡罗来纳州立大学)
研究探讨量化对LLM生成Go包中包幻觉和安全风险的影响,发现量化降低精度会增加幻觉率和漏洞风险,揭示LLM生成依赖项的系统性错误模式。
2025-12-09 cs.SE
A Longitudinal Analysis of Bloated Java Dependencies
我们研究了一个单一的软件生态系统中臃肿的依赖关系的演变和影响:Java/Maven。膨胀的依赖项是打包在应用程序二进制文件中但运行应用程序不需要的第三方库。我们分析了435个Java项目的历史。这些历史数据包括48,469个不同的依赖项,我们研究了总共31,515个版本的Maven依赖树。膨胀的依赖关系随着时间的推移而稳步增加,并且89.02%的膨胀的直接依赖关系在所研究项目的所有后续版本中仍然膨胀。这一经验证据表明,开发人员可以安全地删除臃肿的依赖。我们进一步报告了关于膨胀引起的不必要的维护工作的新见解。我们发现,开发人员执行的依赖更新中有22%是在膨胀的依赖上进行的,而Dependabot建议在膨胀的依赖上进行类似的更新。
2021-05-29 cs.SE
Detecting and removing bloated dependencies in CommonJS packages
针对服务端CommonJS模块系统JavaScript包的依赖膨胀问题,提出基于文件系统监控的追踪式动态分析方法,检测准确率优于现有技术,可识别超半数冗余依赖,移除直接冗余依赖可在保功能正确的同时减少大量间接冗余依赖。
2025-05-21 cs.SE