With a track record of defending major corporations from sophisticated digital threats, Malik Haidar has a unique vantage point on the evolving landscape of cybersecurity. His work at the intersection of analytics, intelligence, and business strategy gives him deep insight into the tactics of modern attackers. Today, we delve into the anatomy of a recent software supply chain attack targeting the decentralized exchange dYdX, exploring what it reveals about the persistent and increasingly clever threats facing the open-source ecosystem.
The recent dYdX compromise wasn’t a complex zero-day exploit but a suspected account takeover, using legitimate credentials to publish malicious packages. Could you walk us through what this simplicity reveals about the attackers’ methods and, for any project maintainer out there, what are the first critical steps to take when you realize you’ve been breached?
This incident is a chilling reminder that the most effective attacks often target people, not just code. By using legitimate publishing credentials, the threat actor bypassed many technical defenses. This suggests a focus on social engineering or credential theft rather than finding a needle-in-a-haystack vulnerability. The attacker showed a deep, almost intimate knowledge of the package, carefully inserting malicious code into core files like registry.ts and account.py to ensure it executed during normal use. It shows a level of patience and sophistication that’s far from simple. If a maintainer discovers this, the response must be immediate and decisive, following the playbook dYdX shared: isolate any affected machines immediately, move all funds and assets to a brand-new wallet created on a clean system, and rotate every single API key and credential associated with the project. There’s no time to waste in these situations.
It’s fascinating that the attackers deployed a wallet stealer for the npm package but added a full Remote Access Trojan to the Python version. From your perspective, what does this deliberate difference in payloads tell us about the attacker’s strategic goals for each developer community?
This dual-payload strategy is incredibly telling. It shows the attackers aren’t just casting a wide, generic net; they’re tailoring their attacks to the perceived value of their targets. For the JavaScript ecosystem via npm, their goal seems to be a quick, opportunistic financial grab—siphon cryptocurrency seed phrases and get out. It’s a high-volume, low-persistence play. But for the Python ecosystem, the inclusion of a RAT signals a much deeper, more sinister ambition. They aren’t just after wallet credentials; they’re seeking persistent, remote access to the developer’s machine. This allows for long-term surveillance, deeper infiltration into corporate networks, and potentially setting the stage for a much larger, more devastating future attack. It’s the difference between a smash-and-grab and a long-term espionage campaign, and security teams need to monitor for both the loud theft and the quiet, persistent foothold.
This wasn’t an isolated event for dYdX; they’ve faced an npm compromise in 2022 and a DNS hijacking in 2024. When you see a single entity persistently targeted through different trusted channels, what does that pattern suggest about the adversary’s long-term strategy and commitment?
Seeing a pattern like this—a supply chain attack, then a DNS hijack, then another supply chain attack—paints a clear picture of a dedicated and persistent adversary. This isn’t a random actor; this is someone with a long-term strategic interest in dYdX, its users, or the assets it manages. They are methodically testing and exploiting every trusted distribution channel associated with the brand. It shows a significant allocation of resources and a patient, calculated approach. They are willing to learn, adapt their methods, and try again, moving from the code repository to the domain registrar. The nearly identical credential theft logic used across different languages in the latest attack indicates deliberate, cross-functional planning. This is a siege, not a raid, and it highlights that for high-value targets, security can’t just be about protecting one single frontier.
Shifting to another subtle threat, researchers have highlighted how packages that are referenced in documentation but don’t actually exist create a major supply chain blind spot. Could you explain how this “npx confusion” works and why simply running npx --no-install is such a critical, practical defense?
This “npx confusion” is a dangerously clever exploitation of developer convenience. Developers often copy and paste commands from README files, trusting that npx will fetch and run the right tool. The problem arises when a package like openapi-generator-cli is referenced, but the actual published package is @openapitools/openapi-generator-cli. An attacker can register the non-existent name, and suddenly thousands of developers are inadvertently downloading and executing malicious code. We saw this phantom package get downloaded nearly 4,000 times in a single week. The difference between using npx by default and npx --no-install is the difference between a secure and an insecure workflow. The default behavior will fall back and download the package from the registry if it’s not found locally—that’s the security gap. Using the --no-install flag changes this; it forces the command to fail if the tool isn’t already on your machine, effectively slamming the door on this entire attack vector. It’s a small change in habit for a huge gain in security.
We’re hearing more about attackers moving “upstream” in the software supply chain. Could you paint a picture of what an upstream attack looks like in practice and explain what makes it such a “low-noise” method for achieving such widespread compromise?
An upstream attack is the holy grail for a certain class of attacker. Instead of trying to hack thousands of individual companies downstream, they go to the source: a widely used open-source library, a popular developer tool, or the account of a trusted package maintainer. By compromising that single point, their malicious code is automatically distributed and trusted by every single project, developer, and company that uses it. It’s “low-noise” because nothing looks out of the ordinary to the downstream user. They’re just running a routine update, npm install, or pulling a trusted container image. There are no alarms, no loud alerts. The malicious code comes gift-wrapped with a seal of approval from the open-source community, making it an incredibly efficient way to achieve either a precision compromise of a specific target or a massive, opportunistic infection at scale.
Looking ahead, what is your forecast for software supply chain security over the next five years?
I believe we are at an inflection point. The next five years will be defined by an arms race between attacker innovation and defensive maturation. We’re going to see attackers leverage AI to create even more convincing typosquatted packages and more deeply obfuscated malicious code, making manual detection nearly impossible. The battle will move further upstream, targeting not just packages but the very build systems and CI/CD pipelines that produce them. In response, I forecast a major shift toward verifiable, end-to-end provenance. Technologies like SLSA and Sigstore will move from being niche best practices to mandatory requirements for critical infrastructure. We will see the rise of “secure-by-default” development platforms that enforce these principles automatically, because the sheer volume and sophistication of threats will make manual vigilance an untenable long-term strategy. The organizations that thrive will be those that treat their software supply chain with the same rigor and suspicion as their physical one.

