Panel Discussion: Security, Privacy, and Open Source
This panel discussion explores the security implications of relying on open-source software versus proprietary solutions in enterprise environments. The speakers analyze the risks associated with supply chain vulnerabilities, the impact of software quality, and the trade-offs between ease-of-use and privacy. The discussion highlights the shared responsibility of security practitioners in managing dependencies and the potential for supply chain attacks in widely used libraries.
The Hidden Cost of Convenience: Why Your Dependency Chain is Leaking Data
TLDR: Modern development workflows rely heavily on open-source libraries and AI-assisted coding tools, but this convenience creates massive, often overlooked, supply chain risks. Attackers are increasingly targeting the transitive dependencies of these libraries to gain unauthorized access to sensitive environments. Pentesters and researchers must shift their focus from simple application-layer bugs to auditing the entire dependency graph and the security posture of the tools developers use to write code.
Security researchers often obsess over the latest zero-day in a web framework, but the real danger is usually sitting in your node_modules or site-packages folder. The recent panel discussion at Security BSides 2025 made one thing clear: we are trading security for speed at an unsustainable rate. When developers pull in a library to handle logging or data serialization, they are rarely auditing the transitive dependencies that come along for the ride. This is the classic OWASP A06:2021 – Vulnerable and Outdated Components problem, but it has evolved into a sophisticated supply chain attack vector.
The Mechanics of the Supply Chain Compromise
Attackers are no longer just looking for a way to inject a script into a login form. They are looking for ways to compromise the build pipeline or the libraries that feed into it. This is T1195.002 – Supply Chain Compromise: Compromise Software Dependencies in action. If you can get a malicious payload into a widely used library, you effectively own every application that pulls that version of the code.
Consider the impact of CVE-2021-44228, the Log4j vulnerability. It wasn't just a bug in a specific application; it was a fundamental flaw in a ubiquitous logging utility that existed in the dependency tree of thousands of enterprise systems. The panel noted that many developers don't even know what libraries their code is importing, let alone the libraries those imports are pulling in. When you run a command like this, you are trusting the entire ecosystem:
npm install express
# Or in Python
pip install requests
If a malicious actor manages to push a compromised version of a sub-dependency, your application becomes a vector for data exfiltration or remote code execution the moment it builds.
The AI Coding Assistant Trap
The rise of AI-assisted coding tools like GitHub Copilot has introduced a new, subtle risk. Developers are using these tools to generate boilerplate code and even entire functions, often without verifying the security implications of the generated output. If an AI suggests a library that is known to be vulnerable or suggests a pattern that is inherently insecure, the developer might accept it without a second thought.
The panel emphasized that we are seeing a shift where the "human in the loop" is becoming the weakest link. If the AI suggests a library, the developer assumes it is safe. If the library is a wrapper around a more complex, insecure dependency, the vulnerability is inherited. We are essentially automating the introduction of technical debt and security flaws into our production environments.
Auditing the Dependency Graph
For a pentester or bug bounty hunter, the strategy needs to change. You cannot just look at the front-end. You need to map the dependency graph. Tools like OWASP Dependency-Check are essential for identifying known vulnerabilities in your project's dependencies. However, you also need to look for "shadow" dependencies—libraries that are not explicitly listed in your package.json or requirements.txt but are present in the environment.
When you are on an engagement, ask the development team how they manage their dependencies. Do they use a private registry? Do they pin versions? Do they have an automated process for updating dependencies? If the answer is "we just run npm update," you have found your entry point.
The Defensive Reality
Defenders need to move toward a "zero-trust" approach for their own build pipelines. This means implementing Software Bill of Materials (SBOM) tracking to know exactly what code is running in production. It also means restricting the ability of build servers to pull from public repositories without going through a vetted, internal proxy. If a library hasn't been scanned and approved, it shouldn't be in the build.
Security is not a feature you add at the end of the development cycle; it is a constraint you must enforce throughout the entire process. If you are a developer, stop blindly trusting the libraries you import. If you are a researcher, start looking at the supply chain. The next big breach won't come from a clever SQL injection; it will come from a line of code that someone else wrote, that you imported, and that you never bothered to check. The responsibility for the security of your application starts with the first line of code you write and ends with the last dependency you pull.
CVEs
Vulnerability Classes
Attack Techniques
OWASP Categories
🔒 BSides Mumbai 2024 - The Ultimate Cybersecurity Talks & Discussions Playlist! 🔒
Up Next From This Conference
Similar Talks

Inside the FBI's Secret Encrypted Phone Company 'Anom'

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




