Pinning Is Futile: You Need More Than Local Dependency Versioning to Defend against Supply Chain Attacks
Hao He, Bogdan Vasilescu, Christian Kästner
TL;DR
The paper quantitatively analyzes the security and maintenance effects of dependency versioning in the npm ecosystem, focusing on pinning versus floating. Using counterfactual time-travel dependency resolution and ecosystem-wide simulations, it finds that pinning direct dependencies can increase the attack surface and maintenance burden for large graphs, challenging the assumption that pinning improves security. It further demonstrates that coordinated, ecosystem-level pinning—especially transitive pinning of upstream packages—can substantially reduce the risk of malicious package updates, suggesting concrete npm tooling changes and governance approaches. The work provides practitioners and researchers with evidence-based guidance for more secure software supply chains and opens avenues for cross-ecosystem validation and policy development.
Abstract
Recent high-profile incidents in open-source software have greatly raised practitioner attention on software supply chain attacks. To guard against potential malicious package updates, security practitioners advocate pinning dependency to specific versions rather than floating in version ranges. However, it remains controversial whether pinning carries a meaningful security benefit that outweighs the cost of maintaining outdated and possibly vulnerable dependencies. In this paper, we quantify, through counterfactual analysis and simulations, the security and maintenance impact of version constraints in the npm ecosystem. By simulating dependency resolutions over historical time points, we find that pinning direct dependencies not only (as expected) increases the cost of maintaining vulnerable and outdated dependencies, but also (surprisingly) even increases the risk of exposure to malicious package updates in larger dependency graphs due to the specifics of npm's dependency resolution mechanism. Finally, we explore collective pinning strategies to secure the ecosystem against supply chain attacks, suggesting specific changes to npm to enable such interventions. Our study provides guidance for practitioners and tool designers to manage their supply chains more securely.
