It started with a DM on LinkedIn. A recruiter, polished profile, years of experience in crypto. The job: senior developer at a top DeFi protocol. The test: a coding challenge, standard for remote hires. The developer, let's call him Alex, completed the test, ran the provided script, and waited. He never got the job. But the attacker got something far more valuable: a session token that unlocked the code repository of a live protocol. Within days, $11.8 million vanished. This isn't a story about a bug in Solidity. It's about a bug in trust. And it's spreading faster than any smart contract exploit.
Context: The New Attack Surface
We've spent years hardening the blockchain. Audits, formal verification, bug bounties. We've built castles in the sky, but we forgot to lock the ground floor. The attack disclosed by Singapore authorities in early 2025 is a masterclass in social engineering combined with supply chain poisoning. The vector is not a zero-day in the EVM; it's a zero-day in the recruitment process. The attacker poses as a legitimate employer, sends a coding test that includes a malicious payload—often a disguised 'environment setup script' or 'test runner'—which, when executed on the developer's local machine, installs a session token stealer. This malware exfiltrates cookies, browser sessions, and—critically—any active tokens for code repositories, cloud consoles, or even CI/CD pipelines. The developer, eager to impress, runs the script. The attacker now has a passport to the project's most sensitive assets.
What makes this attack particularly insidious is its ability to bypass multi-factor authentication (MFA). Session tokens are the keys to the kingdom. Once stolen, the attacker can impersonate the developer without needing to re-authenticate. MFA, whether SMS or app-based, is rendered useless because the attacker already holds a valid session. This is not a new technique in the cybersecurity world—it's a classic 'session hijacking'—but its application in the Web3 context is devastating. The attacker doesn't need to hack the blockchain; they hack the human infrastructure that supports it.
Core: The Architecture of a Human Exploit
Let's deconstruct the attack chain. Step one: targeting. The attackers specifically hunt for developers with high-level access to code repositories—those who can push to main, approve pull requests, or manage private keys. They use LinkedIn, Telegram groups, or even dedicated Web3 job boards. The bait is a high salary, remote work, and a prestigious project name. Step two: the fake coding test. The victim receives a 'test environment' that requires running a local script. This script could be a Node.js package, a Python script, or even a Docker container. Inside, hidden in obfuscated code, is a payload that exfiltrates the developer's session tokens. Step three: token theft. The malware targets browser storage, specifically the cookies and local storage of popular code hosting platforms like GitHub, GitLab, or Bitbucket. It also targets cloud provider consoles (AWS, GCP, Azure) if the developer has those open. Step four: access granted. The attacker now has a live session that looks exactly like the developer's. They can browse the repository, read the code, and—if the developer's permissions are too broad—commit malicious code, modify smart contracts, or extract private keys. The $11.8 million loss is likely just the tip of the iceberg.
Based on my experience auditing over 40 whitepapers and later managing protocol security, I've seen this blind spot repeatedly. Teams obsess over smart contract audits but rarely audit their own hiring process. They treat the recruitment pipeline as a trustless environment, assuming that because they are in crypto, the candidate is aligned with decentralization values. But the attacker is not a crypto enthusiast; they are a professional criminal exploiting a human process. The attack is a micro-innovation: it doesn't invent new malware, but it repurposes existing techniques into a perfectly targeted social engineering campaign. The victim is not a random user; it's a developer who already has access to the kingdom. That's the brilliance—and the danger.
The attack chain is mature and replicable. The attacker doesn't need to understand Solidity or Rust. They just need to understand people. The coding test is a perfect Trojan horse: it's expected, it's isolated from the main codebase, and it runs on the developer's machine. The attacker assumes the developer will execute it. And they do, because they want the job. This is a classic case of 'human factor' vulnerability, amplified by the remote, trust-based nature of Web3 work.
Contrarian: The Decentralization Paradox
Here's the counter-intuitive truth: the push for decentralization may actually be making this attack easier. In traditional finance, a new hire goes through a background check, a hardware-provisioning process, and a strict onboarding with limited access initially. In Web3, we often hire immediately with full remote access, because we value speed and autonomy. We give developers keys to the castle on day one. We also rely on open-source collaboration tools that are inherently designed for trust—GitHub, for example, trusts that the session token belongs to the user. But when that token is stolen, the entire project's codebase becomes a liability. The irony is that 'code is law' but the code is only as secure as the human who wrote it.
Moreover, the attack highlights a fundamental flaw in the 'not your keys, not your crypto' ethos. We tell users to hold their own keys. But we don't tell developers to hold their own sessions. The session token is a kind of key, and it's stored in a browser cookie that can be stolen by a simple script. The industry has invested heavily in hardware wallets for private keys, but we haven't done the same for developer credentials. The attacker didn't need to crack a FIDO2 key; they just needed to steal a cookie. The solution is not just better MFA, but a fundamental rethinking of how we authenticate and authorize developers in remote environments.
Another blind spot: the attack is not limited to stolen funds. If the attacker gains access to the code repository, they can also inject backdoors into the codebase itself—a supply chain attack that could compromise every user of the protocol. The $11.8 million is the immediate loss, but the long-term damage could be millions more if the code is poisoned. The industry must recognize that the recruitment process is now a critical security boundary. We need to apply the same rigor to human onboarding as we do to smart contract deployment.

Takeaway: Building a Human Security Layer
The next generation of Web3 security will not be about better cryptography. It will be about better process. We need to design hiring workflows that are hardened against social engineering. This means: coding tests should be executed in isolated, ephemeral containers or virtual machines that have no access to the developer's personal environment. The test environment should be a sandbox that cannot exfiltrate any data. Developers should use dedicated, low-privilege accounts for job applications, separate from their main development accounts.
More importantly, we need to adopt phishing-resistant MFA, such as FIDO2 hardware keys, for all high-privilege accounts. Session tokens should have short time-to-live and be tied to specific IPs or device fingerprints. And finally, every project should conduct a 'human audit'—a review of the recruitment process, the permissions granted to new hires, and the monitoring of suspicious activity.
This attack is a wake-up call. The bull market is raging, and the euphoria is blinding us to the underlying vulnerabilities. We are building a decentralized future on centralized trust in our hiring process. That trust must be earned, not assumed. The decentralization movement began with the promise of eliminating third-party risk. But if we can't even secure the first interaction with a potential contributor, we are building on sand.
True ownership begins where the server ends. But the server is now the developer's laptop. And the key is the session token. It's time to lock that down.
Debate is the compiler for better consensus. Let's debate how we secure our human infrastructure. Because the next coding challenge you accept might not be for a job—it might be for a backdoor.
Not your keys, not your voice. But also: not your session, not your code.