[论文解读] Small World with High Risks: A Study of Security Threats in the npm Ecosystem
本文分析 npm 的依赖和维护者网络,以量化安全风险,揭示高隐式信任以及来自少数维护者或流行包的可能广泛影响攻击。它还评估了如可信维护者与审查等缓解策略以降低风险。
The popularity of JavaScript has lead to a large ecosystem of third-party packages available via the npm software package registry. The open nature of npm has boosted its growth, providing over 800,000 free and reusable software packages. Unfortunately, this open nature also causes security risks, as evidenced by recent incidents of single packages that broke or attacked software running on millions of computers. This paper studies security risks for users of npm by systematically analyzing dependencies between packages, the maintainers responsible for these packages, and publicly reported security issues. Studying the potential for running vulnerable or malicious code due to third-party dependencies, we find that individual packages could impact large parts of the entire ecosystem. Moreover, a very small number of maintainer accounts could be used to inject malicious code into the majority of all packages, a problem that has been increasing over time. Studying the potential for accidentally using vulnerable code, we find that lack of maintenance causes many packages to depend on vulnerable code, even years after a vulnerability has become public. Our results provide evidence that npm suffers from single points of failure and that unmaintained packages threaten large code bases. We discuss several mitigation techniques, such as trusted maintainers and total first-party security, and analyze their potential effectiveness.
研究动机与目标
- 量化在 npm 中依赖关系与生态系统如何增长,以及这一增长如何影响安全风险。
- 评估包和维护者对生态系统安全面的影响。
- 研究脆弱性如何通过传递依赖传播,并识别关键的故障点。
- 评估缓解策略,以降低对高影响包和维护者的风险。
提出的方法
- 从跨时间快照的包元数据构建 npm 依赖图 G_t。
- 定义并计算度量指标:包覆盖范围(PR)、隐式信任包(ITP)、维护者覆盖范围(MR)和隐式信任维护者(ITM)。
- 建模威胁(恶意包、未维护的旧代码、包接管、账户接管、共谋)并通过这些指标推导其风险暴露。
- 利用版本发布数据分析演变(5,386,239 个发布;676,539 个包;199,327 个维护者;609 条公告)。
- 使用公开公告来定义漏洞覆盖范围(VR_t)和漏洞报告率(VRR_t),以评估暴露。
实验结果
研究问题
- RQ1npm 依赖网络的连通性和密度有多大?这一特征随时间如何演变?
- RQ2在安装某个包或维护者被攻破时,能隐式信任的包和维护者各有多少?
- RQ3哪些维护者和包具有最大的覆盖范围?随着生态系统增长,这一情况如何变化?
- RQ4生态系统中有多少比例依赖于有漏洞或未修补代码?漏洞的报告速度如何?
- RQ5在不扼杀生态系统增长的前提下,哪些缓解策略是可行的以降低风险?
主要发现
- 平均而言,安装一个 npm 包会隐式信任 79 个第三方包和 39 个维护者。
- 高度流行的包能够影响数十万甚至更多的其他包,使其成为恶意软件的主要目标。
- 极少数被妥协的维护者账户就能将恶意软件注入到多数包中,而且这一风险随时间增长。
- 生态系统显示出包覆盖范围和维护者覆盖范围的上升,部分包在 2018 年前后就已覆盖超过 100,000 个其他包,维护者覆盖范围超过 10,000 个包。
- 高达 40% 的所有包依赖于至少一个公开已知漏洞的代码,凸显出对未修补代码的显著暴露。
- 如经审查的可信维护者集合等缓解选项可以将风险减半;对前 300 个包的审查也可显著降低风险;实现完美的一、二方安全仍具挑战性但对高使用率包具有信息价值。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。