Will We Survive the Transitive Vulnerability Locusts?
This talk analyzes the security risks posed by transitive dependencies in modern software supply chains, specifically focusing on how deep dependency trees can introduce vulnerabilities that are difficult to track. The speakers demonstrate a methodology for triaging these vulnerabilities by correlating dependency graphs with actual code usage and exploitability, rather than relying solely on static vulnerability scanners. They propose using Large Language Models (LLMs) to automate the analysis of whether a vulnerable dependency is reachable and exploitable within a specific application's context. The presentation highlights the importance of mature DevSecOps practices, such as scheduled rebuilds and virtual patching, to mitigate these risks.
Beyond the Noise: Why Your Dependency Tree is Lying to You
TLDR: Most software composition analysis tools generate massive lists of false positives by flagging vulnerable dependencies that are never actually executed in your code. This research demonstrates a methodology for filtering these alerts by mapping dependency graphs against actual code usage and using LLMs to verify reachability. Pentesters and developers should shift focus from raw vulnerability counts to verified exploitability to stop wasting time on "ghost" vulnerabilities.
Security researchers and developers have spent years fighting the "dependency hell" that comes with modern package managers. Every time you run an npm install, you are pulling in thousands of lines of code you didn't write, maintained by people you don't know, and often bundled with vulnerabilities you didn't ask for. The standard response has been to run automated scanners, which inevitably return a wall of red text. Most of these alerts are noise. They tell you that a library in your node_modules has a CVE-2024-37890, but they rarely tell you if your application actually calls the vulnerable function.
The Transitive Vulnerability Trap
The real danger isn't just the direct dependencies you explicitly include in your package.json. It is the transitive dependencies—the dependencies of your dependencies—that create a massive, opaque attack surface. When a vulnerability is announced in a low-level utility library, it ripples upward through the dependency tree.
During a recent analysis of Parse Server, researchers found that even after patching a vulnerable WebSocket library, the same vulnerability persisted. Why? Because the library was being pulled in through multiple different paths in the dependency graph. You might patch the version used by your primary framework, but if a secondary plugin or a deep-nested utility still relies on an older, vulnerable version, your application remains exposed. This is the "transitive nightmare." It turns a simple patch management task into a game of whack-a-mole where the mole is hiding in a basement you didn't know existed.
From Static Scanning to Reachability Analysis
Relying on static analysis tools like npm audit is a losing battle because they lack context. They see a vulnerable package and flag it, regardless of whether that package is reachable from your entry point. To move beyond this, you need to perform reachability analysis.
The methodology presented involves five distinct steps:
- Dependency Graph Construction: Map the entire tree, not just the top-level packages.
- Vulnerability Identification: Correlate the graph with known CVE databases.
- Import Verification: Check if the vulnerable code is actually imported into your project.
- Usage Verification: Determine if the specific vulnerable functions or classes are invoked.
- Exploitability Analysis: Use an LLM to evaluate if the data flow from an untrusted source reaches the vulnerable sink.
This approach is significantly more effective than traditional triage. In many cases, you will find that while a vulnerable library is present, it is never imported, or it is imported but the vulnerable function is never called. In other instances, the library is imported, but the application logic prevents user-controlled input from ever reaching the vulnerable sink. By automating this with models like Llama 3 or Mistral, you can filter out the vast majority of false positives that plague security teams.
Practical Exploitation and Mitigation
When you are on a pentest, don't just report the presence of a vulnerable dependency. That is the quickest way to get your report ignored by a busy development team. Instead, trace the data flow. If you find a library vulnerable to Prototype Pollution or SSRF, look for the entry point. Can you control the object keys or the URL parameter that gets passed to that library?
If you are a defender, the most effective mitigation isn't just "update everything." It is implementing a strategy of scheduled, automated rebuilds. By forcing your CI/CD pipeline to pull the latest versions of dependencies on a regular cadence, you catch most of these issues before they become critical. Furthermore, if you cannot patch a dependency immediately, use virtual patching. Deploying a WAF or an API security solution in front of your application allows you to block the specific malicious payloads targeting the vulnerability while the developers work on a permanent fix.
The Future of Supply Chain Security
The industry is moving toward a model where we treat software composition as a dynamic graph rather than a static list. We need to stop treating all vulnerabilities as equal. A critical vulnerability in a library that is never executed is a distraction. A medium-severity vulnerability in a library that processes raw user input is a fire.
As you continue your research, focus on the data flow. Use the tools available to map your dependencies, but verify the reachability of the sinks. If you find a vulnerability, prove it is exploitable in the context of the application. That is the difference between a report that gets filed away and a finding that actually improves the security of the system. Stop chasing ghosts in your dependency tree and start hunting for the actual, reachable paths that lead to compromise.
CVEs
Vulnerability Classes
Target Technologies
Attack Techniques
OWASP Categories
All Tags
Up Next From This Conference
Similar Talks

Kill List: Hacking an Assassination Site on the Dark Web

Unmasking the Snitch Puck: The Creepy IoT Surveillance Tech in the School Bathroom




