NPM 注册库用户每周下载被弃用的包达 21 亿次
关键要点
- NPM 注册库被弃用的包每周预计下载 21 亿次。
- 被弃用、归档和“孤儿”的 NPM 包可能包含未修补或未报告的漏洞,威胁到依赖这些包的项目。
- Aqua Security 的 Nautilus 团队发布了一个开源工具,可帮助开发者识别项目中的被弃用依赖。
- 开源软件停止更新的原因多种多样,开发者需主动告知用户维护状态。
- 调查显示,超过 20% 的前 50,000 个 NPM 包可能存在维护缺口,尤其是当考虑到相关的“孤儿”包时。
根据对 NPM 注册库中前 50,000 个下载量最高的包的统计分析,每周有大约 21 亿次下载被弃用的包。Aqua Security 的 Nautilus团队警告,这些被弃用、归档和“孤儿”的 NPM 包可能含有未修补或未报告的安全漏洞,给依赖它们的项目带来风险。JavaScript开发者可能未意识到对被弃用包的依赖对他们工作的影响。
为此,Aqua Nautilus 发布了一款 ,帮助开发者识别项目中的被弃用依赖。
NPM 发布者可能归档包而非修复安全漏洞
开源软件因多种原因可能停止更新,开发者和维护者需向用户明确这一维护状态。不过,研究人员指出,并非所有开发者在其被弃用的 NPM 包上都对用户风险保持透明。
研究团队的分析因发现某开源软件维护者在收到关于漏洞的报告后,选择在同一天将该漏洞库归档而启动。
通过归档未修复安全漏洞的库,项目拥有者让依赖该库的开发者对潜在风险一无所知。
Aqua Security 的研究员 Ilay Goldman 强调,开源供应链中的漏洞可能为重大网络攻击敞开大门。他提到:“例如,虽然
并不在 npm 中,但突显了使用存在漏洞而应被视为废弃包的问题。”
考虑到这些潜在后果,Aqua Nautilus 团队试图更准确地估计注册库中未维护的 NPM 包的影响。
超过 20% 的前 50,000 个 NPM 包可能存在维护缺口
对 NPM 包被弃用的统计分析包括“官方被弃用”包和维护状态不确定的其他包,这些包链接的归档或不可用的库被视为源提交。
在考虑被弃用包和有直接依赖于被弃用项目的活跃包后,研究人员发现大约 4,100 个(8.2%)的前 50,000 个下载量最高的 NPM包属于“官方”被弃用类别。
不过,将归档的库也纳入被弃用的定义后,受被弃用影响的包数量增加到 6,400 个(12.8%)。
研究人员指出,由于无法跟踪维护状态、查看提交历史和报告问题,“孤儿”包也可视为被弃用。
据 Nautilus 的分析,链接的仓库显示为不可用(404 错误)的包使被弃用率上升至 15%(7,500包)。而没有任何链接仓库的包,使被弃用包的总数上升到 10,600 个,一共占前 50,000 个包的 21.2%。
Nautilus 团队估算,在这种更广泛的被弃用包定义下,NPM 注册库中每周有大约 21 亿次被弃用包的下载。
当考虑到某些包创建的广泛依赖关系时,问题会