论文标题

关于node.js应用程序中NPM脆弱依赖关系的威胁

On the Threat of npm Vulnerable Dependencies in Node.js Applications

论文作者

Alfadel, Mahmoud, Costa, Diego Elias, Mokhallalati, Mouafak, Shihab, Emad, Adams, Bram

论文摘要

软件漏洞对我们每天依赖的软件系统具有很大的负面影响。有关软件漏洞的报告总是描绘出严峻的图片,其中一些报告表明83%的组织依赖脆弱的软件。但是,我们的经验使我们相信,在宏伟的计划中,这些软件漏洞的影响可能比报告的影响少。因此,我们进行一项研究,以更好地了解NODE.JS应用程序中使用的NPM脆弱软件包的威胁。我们根据其生命周期定义了三个包装中漏洞的威胁水平,如果在依赖应用程序(t)中使用该漏洞或尚不清楚的情况下,将包裹漏洞分配给较低的威胁水平(T),如果在T中报告但尚未在t上公开发布脆弱性,则中等威胁级别,如果该脆弱性尚未公开。然后,我们进行了一项经验研究,涉及6,673个现实世界,主动和成熟的开源Node.js应用程序。我们的发现表明,尽管有67.93%的检查应用程序取决于至少一个脆弱的软件包,但在这些受影响应用程序中,有94.91%的脆弱软件包被归类为威胁较低。此外,我们发现,对于被归类为具有很高威胁的脆弱软件包的情况,正是应用程序缺乏更新使它们脆弱,即,漏洞的存在不是真正的问题。此外,我们在应用程序一生的不同阶段验证了我们的发现,发现我们的发现仍然存在。我们的研究认为,在软件漏洞方面,事情可能并不像看起来那么糟糕,并且考虑脆弱性威胁是关键。

Software vulnerabilities have a large negative impact on the software systems that we depend on daily. Reports on software vulnerabilities always paint a grim picture, with some reports showing that 83% of organizations depend on vulnerable software. However, our experience leads us to believe that, in the grand scheme of things, these software vulnerabilities may have less impact than what is reported. Therefore, we perform a study to better understand the threat of npm vulnerable packages used in Node.js applications. We define three threat levels for vulnerabilities in packages, based on their lifecycle, where a package vulnerability is assigned a low threat level if it was hidden or still unknown at the time it was used in the dependent application (t), medium threat level if the vulnerability was reported but not yet published at t, and high if it was publicly announced at t. Then, we perform an empirical study involving 6,673 real-world, active, and mature open source Node.js applications. Our findings show that although 67.93% of the examined applications depend on at least one vulnerable package, 94.91% of the vulnerable packages in those affected applications are classified as having low threat. Moreover, we find that in the case of vulnerable packages classified as having high threat, it is the application's lack of updating that makes them vulnerable, i.e., it is not the existence of the vulnerability that is the real problem. Furthermore, we verify our findings at different stages of the application's lifetime and find that our findings still hold. Our study argues that when it comes to software vulnerabilities, things may not be as bad as they seem and that considering vulnerability threat is key.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源