中文

并非所有依赖都相等:NPM中生产依赖的实证研究

软件工程 2022-08-30 v2

摘要

现代软件系统通常通过利用他人以库和包形式编写的代码来构建,以加速开发。尽管使用第三方包有诸多好处,软件项目往往依赖于大量软件包。因此,开发者面临保持项目依赖最新且无安全漏洞的艰巨挑战。然而,项目依赖在生产环境中被使用的频率如何,又会在何时对其项目安全构成威胁?我们对100个使用Node Package Manager(npm)的JavaScript项目开展实证研究,量化项目依赖发布至生产环境的频率,并分析其特征及对安全的影响。结果表明,已安装依赖中发布至生产环境的比例不足1%。我们的分析揭示,包的功能不足以判定其是否会发布至生产环境。事实上,配置为运行时依赖的已安装依赖中有59%未在生产中使用,而配置为开发依赖的依赖中有28.2%在生产中使用,这推翻了依赖管理的两个常见假设。结果还表明,多数安全告警针对未在生产中使用的依赖,使其极不可能构成软件安全风险。我们的研究揭示了依赖管理更为复杂的一面:并非所有依赖都相等。生产环境中使用的依赖对安全暴露更为敏感,应优先处理。然而,当前工具在识别生产依赖方面缺乏适当支持。

关键词

引用

@article{arxiv.2207.14711,
  title  = {Not All Dependencies are Equal: An Empirical Study on Production Dependencies in NPM},
  author = {Jasmine Latendresse and Suhaib Mujahid and Diego Elias Costa and Emad Shihab},
  journal= {arXiv preprint arXiv:2207.14711},
  year   = {2022}
}

备注

The 37th IEEE/ACM International Conference on Automated Software Engineering