- What: A September 18, 2026 joint advisory from Japanese, US, Australian and German authorities attributes the Contagious Interview campaign to WaterPlum, a crew tied to North Korea's 313 General Bureau, which lures developers through fake job interviews and gets them to run attacker-supplied code.
- Impact: At least 30,000 devices across more than 100 countries were infected, credentials or funds were taken from over 7,000 cryptocurrency wallets, and 1.7 billion Japanese yen (10.71 million USD) in crypto moved out of victim accounts between December 2025 and July 2026.
- Fix / mitigation: There is no patch because there is no vulnerability: stop install scripts and editor tasks from auto-executing, run any code sent by a recruiter only in a disposable sandbox, and verify applicant and recruiter identity on both sides of the hiring conversation.
- Who's at risk: Developers and engineers at AI, cryptocurrency and NFT companies, anyone job hunting on recruiting or freelance platforms, and the employers whose laptops those people also use.
Thirty thousand devices. More than 100 countries. Over 7,000 cryptocurrency wallets with funds or credentials taken. That is the scorecard for WaterPlum, the North Korean group behind the long running Contagious Interview campaign, as tallied in a joint advisory published September 18, 2026 by the Japanese National Police Agency, the FBI and IC3, and Australian and German authorities including the Verfassungsschutz. In Japan alone, investigators tracked 1.7 billion yen, roughly 10.71 million US dollars, leaving victim wallets between December 2025 and July 2026.
None of that started with a zero day. It started with a recruiter. Someone reached out about a role at an AI startup, a crypto exchange, an NFT platform. The company looked real because the attackers built it to look real. The candidate did what candidates do: they were flattered, they were eager, and when the interviewer said the video call was glitching and shared a fix, they ran it.
The interview is the intrusion
The advisory describes an operation built entirely around the hiring funnel. WaterPlum operators impersonate legitimate AI, cryptocurrency and NFT companies and work through recruiting and freelance platforms. The technical assessment stage is where the compromise happens. Candidates are told to clone a project and get it running, or to troubleshoot a broken video conferencing session, or simply to execute a snippet the interviewer pastes into chat. Each of those is a completely normal request during a developer interview. That is the point.
Once code runs, the collection is broad: browser credentials, clipboard contents, keystrokes, cryptocurrency private keys and seed phrases, documents and screenshots. A developer laptop is a rich target precisely because it holds both personal wallets and corporate access, and job hunting is one of the few activities people deliberately keep off their employer's radar. Nobody reports a suspicious recruiter to the SOC while they are still hoping the offer comes through.
Five malware families, one delivery story
The advisory links five families to WaterPlum, and the spread across languages and ecosystems shows how much engineering is behind this:
- BeaverTail, JavaScript malware delivered inside npm packages
- InvisibleFerret, a Python based backdoor used for follow on access
- OtterCookie, a JavaScript remote access trojan and information stealer
- OtterCandy, which merges OtterCookie's stealing with full RAT capability
- StoatWaffle, modular Node.js malware delivered through malicious Visual Studio Code projects
Every one of these families arrives inside something a developer was asked to open: a package, a repository, a project folder. There is no exploit to patch and no CVE to track. The vulnerability being exercised is the professional obligation to run the code you were handed.
This is a state revenue line, not a hobby
The advisory attributes WaterPlum to the 313 General Bureau, part of North Korea's Munitions Industry Department. That placement matters. This is not an intelligence collection unit that happens to steal crypto on the side. It sits inside the apparatus that funds weapons production, which means the operation is measured in money moved and will be resourced accordingly. Eight months of activity, 30,000 devices and five maintained malware families is what a funded product team looks like, not what an opportunistic crew looks like.
The RedEye take
The security industry spent years telling users not to click links in email, and largely won that fight. We never had the equivalent conversation about code, because telling a developer not to run unfamiliar code sounds like telling them not to do their job. WaterPlum found that gap and industrialized it. Thirty thousand devices is not a phishing success rate, it is an indictment of how much implicit trust rides on a package.json, a repository clone and a screen share.
There is also an uncomfortable organizational truth in these numbers. Most of these compromises happened on machines during personal time, on personal ambition, using the same laptop that holds the corporate VPN certificate. Security programs have no visibility into the job search, and the deliberate secrecy around interviewing means the victim is motivated to stay quiet even after something feels wrong. Any control that depends on the employee volunteering that they were talking to a recruiter is a control that does not exist. Build for the case where they never tell you, and make the safe path, a disposable sandbox for any code that arrives from outside, faster to use than the unsafe one.
What defenders should learn
- Treat package install scripts as arbitrary execution, because they are. Setting ignore-scripts across developer machines removes BeaverTail's easiest path from clone to code execution and costs almost nothing in daily friction.
- Audit your editors, not just your endpoints. StoatWaffle ships inside Visual Studio Code projects, and a workspace task configured to run when the folder opens executes before a human reads a single line. Hunt for that configuration across your fleet today.
- Give engineers a sanctioned throwaway environment for outside code, and make it a one command action. The advisory's own guidance is to avoid running unknown code outside a sandbox, which only works if the sandbox is already there when curiosity strikes.
- Verification is bidirectional. The advisory tells employers to verify applicant identity, location and qualifications, but this campaign inverts that: your staff need a way to verify the company that is recruiting them. Say out loud that checking a recruiter is normal and not disloyal.
- Assume personal crypto compromise becomes corporate compromise. Over 7,000 wallets were hit by malware that also takes browser credentials and keystrokes. When an employee reports a drained personal wallet, that is an incident ticket, not a sympathy card.
Do not wait for a fixed version, because there is not one. The only levers you control are execution defaults on developer machines, sandboxing, and a culture where an engineer can say "a recruiter sent me a repo" without it being awkward.
Source
Reporting and figures from BleepingComputer, "North Korean WaterPlum hackers infected 30,000 devices worldwide," covering the joint advisory issued September 18, 2026 by Japanese, US, Australian and German authorities.
Fix It Yourself
Everything above is what happened. This is what to run. The check commands change nothing.
Check whether you are exposed
Shows whether npm will execute install scripts from any package you add
npm config get ignore-scriptsLists project files under your dev folders that run code automatically at install time
grep -rl --include=package.json -E '"(preinstall|postinstall|prepare)"' ~/Documents ~/Downloads ~/Projects 2>/dev/null | head -50Finds VS Code workspaces set to run a task the moment the folder is opened
grep -rl --include=tasks.json '"runOn".*"folderOpen"' ~ 2>/dev/nullClose it
Stops npm from running package install scripts on this machine
npm config set ignore-scripts trueStops hooks inside any cloned repository from executing on git operations
mkdir -p ~/.no-git-hooks && git config --global core.hooksPath ~/.no-git-hooksQuarantines a suspect interview project instead of deleting it, replace the path with the folder you were sent
mkdir -p ~/Quarantine && mv ~/Downloads/interview-project ~/Quarantine/Prompts for the agent you already run
Paste this after someone on your team admits they cloned or ran a project sent by a recruiter
Paste this to harden a developer workstation before the next interview cycle
What to alert on
The observable is process lineage where a developer tool becomes the parent of a network capable interpreter that nobody typed a command into. On Windows, alert on Sysmon Event ID 1 where ParentImage is Code.exe, node.exe or npm.cmd and Image resolves to powershell.exe, curl.exe, python.exe or wscript.exe, with a CommandLine containing an encoded blob or an outbound URL. On macOS and Linux, the equivalent from your EDR's process exec telemetry is Electron or node as the parent of /bin/sh, curl or python3 within seconds of a workspace opening or an npm install. Pair that with DNS query logs filtered to queries made by node or by the editor's helper process where the answer resolves to a domain registered in the last 30 days, since the interview lure infrastructure is stood up per campaign and will not be on any allowlist. A single hit on the editor to interpreter lineage is worth a phone call to the user, because the legitimate version of that event almost always comes with a matching terminal session you can point to.
Questions about your exposure?
RedEye Security provides assessments for organizations that need to understand their real risk.
Talk to us