Third-party libraries with rich functionalities facilitate the fast development of Node.js software, but also bring new security threats that vulnerabilities could be introduced through dependencies. In particular, the threats could be excessively amplified by transitive dependencies. Existing research either considers direct dependencies or reasoning transitive dependencies based on reachability analysis, which neglects the NPM-specific dependency resolution rules, resulting in wrongly resolved dependencies. Consequently, further fine-grained analysis, such as vulnerability propagation and their evolution in dependencies, cannot be carried out precisely at a large scale, as well as deriving ecosystem-wide solutions for vulnerabilities in dependencies. To fill this gap, we propose a knowledge graph-based dependency resolution, which resolves the dependency relations of dependencies as trees (i.e., dependency trees), and investigates the security threats from vulnerabilities in dependency trees at a large scale. We first construct a complete dependency-vulnerability knowledge graph (DVGraph) that captures the whole NPM ecosystem (over 10 million library versions and 60 million well-resolved dependency relations). Based on it, we propose DTResolver to statically and precisely resolve dependency trees, as well as transitive vulnerability propagation paths, by considering the official dependency resolution rules. Based on that, we carry out an ecosystem-wide empirical study on vulnerability propagation and its evolution in dependency trees. Our study unveils lots of useful findings, and we further discuss the lessons learned and solutions for different stakeholders to mitigate the vulnerability impact in NPM. For example, we implement a dependency tree based vulnerability remediation method (DTReme) for NPM packages, and receive much better performance than the official tool (npm audit fix).
翻译:具有丰富功能的第三方图书馆有助于快速开发Node.js软件,但也带来了新的安全威胁,这些威胁可以通过依赖性引入脆弱性。特别是,这些威胁可能因过渡依赖性而过度扩大。现有的研究要么考虑直接依赖性,要么根据可获取性分析推理过渡依赖性,这忽视了国家预防机制特有的依赖性解决规则,导致错误解决依赖性依赖性。因此,进一步细微分析,如脆弱性传播及其依赖性演变等,无法在大规模上进行,而且无法为依赖性脆弱性提出全生态系统的解决方案。为了弥补这一差距,我们建议采用基于知识的基于图表的依赖性解决方案,解决树(即依赖性树)等依赖性依赖性依赖性依赖性关系之间的依赖性关系,并大规模调查依赖性树上脆弱性造成的安全威胁,从而导致问题得到解决。 我们首先建立一个完整的依赖性知识性知识图(DVGraph),以了解整个国家预防机制的生态系统(超过1 000万个图书馆版本和6 000万个清晰的相互依存性解决方案),因此,为了消除这一脆弱性,我们提出基于生态系统脆弱性的生态系统脆弱性和直位依赖性研究,我们建议采用一个固定性的研究基础,我们为稳定性研究基础,从研究基础,我们建议采用一个稳定性研究基础,从研究基础,从稳定性研究基础,从研究基础,从研究基础,从研究,从研究,从研究到研究,从研究,从研究,从稳定性研究,从研究,从一个固定性研究,从研究,从研究,从一种稳定性研究,从研究,从研究,从研究,从研究,从上走向,从上走向,从研究,从研究。