Package managers have become a vital part of the modern software development process. They allow developers to reuse third-party code, share their own code, minimize their codebase, and simplify the build process. However, recent reports showed that package managers have been abused by attackers to distribute malware, posing significant security risks to developers and end-users. For example, eslint-scope, a package with millions of weekly downloads in Npm, was compromised to steal credentials from developers. To understand the security gaps and the misplaced trust that make recent supply chain attacks possible, we propose a comparative framework to qualitatively assess the functional and security features of package managers for interpreted languages. Based on qualitative assessment, we apply well-known program analysis techniques such as metadata, static, and dynamic analysis to study registry abuse. Our initial efforts found 339 new malicious packages that we reported to the registries for removal. The package manager maintainers confirmed 278 (82%) from the 339 reported packages where three of them had more than 100,000 downloads. For these packages we were issued official CVE numbers to help expedite the removal of these packages from infected victims. We outline the challenges of tailoring program analysis tools to interpreted languages and release our pipeline as a reference point for the community to build on and help in securing the software supply chain.
翻译:软件包管理员已成为现代软件开发过程的一个重要部分。 他们允许开发者重新使用第三方代码,共享自己的代码,最小化代码,并简化构建过程。 但是,最近的报告显示,软件包管理员被攻击者滥用于传播恶意软件,给开发者和最终用户带来巨大的安全风险。例如,Eslint-scope(一个每周下载数百万次的软件包)在Npm被破坏,以窃取开发者的证明书。为了了解安全漏洞和导致最近供应链袭击的错误信任,我们提出了一个比较框架,以便从质量上评估被解释语言的软件包管理员的功能和安全特征。根据定性评估,我们运用众所周知的方案分析技术,如元数据、静态和动态分析来研究登记册滥用问题。我们的初步工作发现,我们向登记册报告的339个新的恶意软件包(一个每周下载数百万次的Npm)被破坏。软件管理员确认了339个软件包的278(82%),其中3个有10万次以上的下载。我们为这些软件包发布了正式的CVE编号,以帮助加快从受感染的受害人中移除这些软件的参考。我们概述了如何调整程序分析工具的难度,以便将程序分析工具转换成一条管道,并释放成一条线路。我们如何确保软件的版本。