Thou Shalt Not Depend on Me: Analysing the Use of Outdated JavaScript Libraries on the Web
arXiv:1811.00918 · doi:10.14722/ndss.2017.23414
Abstract
Web developers routinely rely on third-party Java-Script libraries such as jQuery to enhance the functionality of their sites. However, if not properly maintained, such dependencies can create attack vectors allowing a site to be compromised. In this paper, we conduct the first comprehensive study of client-side JavaScript library usage and the resulting security implications across the Web. Using data from over 133 k websites, we show that 37% of them include at least one library with a known vulnerability; the time lag behind the newest release of a library is measured in the order of years. In order to better understand why websites use so many vulnerable or outdated libraries, we track causal inclusion relationships and quantify different scenarios. We observe sites including libraries in ad hoc and often transitive ways, which can lead to different versions of the same library being loaded into the same document at the same time. Furthermore, we find that libraries included transitively, or via ad and tracking code, are more likely to be vulnerable. This demonstrates that not only website administrators, but also the dynamic architecture and developers of third-party services are to blame for the Web's poor state of library management. The results of our work underline the need for more thorough approaches to dependency management, code maintenance and third-party code inclusion on the Web.
arXiv commentNetwork and Distributed System Security Symposium (NDSS), San Diego, CA, USA, February 2017
References in corpus (2)
Cited by in corpus (25)
- A Long Way to the Top: Significance, Structure, and Stability of Internet Top Lists
- Small World with High Risks: A Study of Security Threats in the npm Ecosystem
- A Comparative Study of Vulnerability Reporting by Software Composition Analysis Tools
- Lags in the Release, Adoption, and Propagation of npm Vulnerability Fixes
- Study of JavaScript Static Analysis Tools for Vulnerability Detection in Node.js Packages
- PrivacyScore: Improving Privacy and Security via Crowd-Sourced Benchmarks of Websites
- Missed by Filter Lists: Detecting Unknown Third-Party Trackers with Invisible Pixels
- The Hitchhiker's Guide to Facebook Web Tracking with Invisible Pixels and Click IDs
- K-resolver: Towards Decentralizing Encrypted DNS Resolution
- Vulnerable Open Source Dependencies: Counting Those That Matter
- What is in the Chrome Web Store? Investigating Security-Noteworthy Browser Extensions
- Categorizing Service Worker Attacks and Mitigations
- An Empirical Study of Usages, Updates and Risks of Third-Party Libraries in Java Projects
- On Preempting Advanced Persistent Threats Using Probabilistic Graphical Models
- On the Integrity of Cross-Origin JavaScripts
- The Dynamics of Software Composition Analysis
- Code-based Vulnerability Detection in Node.js Applications: How far are we?
- Trusting code in the wild: Exploring contributor reputation measures to review dependencies in the Rust ecosystem
- Interactive, Effort-Aware Library Version Harmonization
- On The Relation Between Outdated Docker Containers, Severity Vulnerabilities and Bugs
- TrackerSift: Untangling Mixed Tracking and Functional Web Resources
- Opportunities and Security Risks of Technical Leverage: A Replication Study on the NPM Ecosystem
- Mir: Automated Quantifiable Privilege Reduction Against Dynamic Library Compromise in JavaScript
- State of Passkey Authentication in the Wild: A Census of the Top 100K sites
- On the security relevance of weights in deep learning