North Korea’s Lazarus Group has been stealing money and intellectual property for over a decade. They hit Sony in 2014, drained $81 million from Bangladesh Bank in 2016, deployed WannaCry in 2017, and pulled off the $625 million Ronin Bridge heist in 2022. The pattern is consistent: find a trust relationship, exploit it, extract value at scale. What has changed recently is the target profile. Lazarus has pivoted hard toward developers specifically, and AI is the reason they can now do it at volume.
The Expel research documents what security researchers have been watching build for a couple of years: a systematic industrialization of developer-targeted social engineering, with AI tooling used to generate the personas, job postings, and initial lure content that gets a foot in the door. Understanding the full attack chain requires looking at the campaigns that built this playbook before AI was in the picture, because the infrastructure has been maturing for years.
Operation Dream Job and the Fake Interview Pipeline
The campaign researchers call “Operation Dream Job” or “Contagious Interview” has been running since at least 2020. The premise is straightforward: Lazarus operators create convincing LinkedIn profiles or reach out through job boards, posing as recruiters from recognizable tech or finance companies. The targets are developers, usually with cryptocurrency, blockchain, or DeFi experience, though the scope has broadened considerably.
The “interview” involves a coding challenge. The candidate is sent a GitHub repository or npm package to run locally, ostensibly as a take-home task or a prerequisite for a technical screen. The package is malicious. Running it triggers the first stage of a multi-phase infection chain.
This is where the attack is clever in a structural sense. It exploits a specific behavior pattern: developers routinely clone repos and run npm install without scrutiny. The social engineering burden is low because the action being requested is completely normal. There is no suspicious attachment, no macro-enabled document, no urgent wire transfer. Just a GitHub link in a message from what looks like a recruiter.
BeaverTail and InvisibleFerret
The malware delivered through these campaigns has been documented in detail by researchers at Palo Alto Unit 42, Phylum, and others. The first-stage payload is typically BeaverTail, a JavaScript-based infostealer that runs inside a Node.js project or is embedded in a modified legitimate npm package.
BeaverTail does several things on first execution. It exfiltrates browser-stored credentials and cookies, specifically targeting cryptocurrency wallet extensions like MetaMask. It reads saved passwords from browsers including Chrome and Firefox. It collects system information. And it downloads the second stage.
The second stage is InvisibleFerret, a Python backdoor. InvisibleFerret establishes persistence, provides remote shell access, and can exfiltrate files from the compromised system. The use of Python is deliberate: developer machines almost universally have Python installed, and a Python process running in the background raises little suspicion.
Some variants of BeaverTail have been found embedded inside npm packages published to the public registry under names designed to look like common utilities. Packages like is-buffer-validator, node-fetch-cache, and others have been flagged by Phylum and Socket security researchers as containing obfuscated Lazarus payloads. The obfuscation is often trivial, base64-encoded strings evaluated at runtime, but it gets past automated scans that only look at package metadata.
// Simplified example of the obfuscation pattern used in malicious packages
const _0x4a2b = Buffer.from('cmVxdWlyZSgnY2hpbGRfcHJvY2VzcycpLmV4ZWMo...', 'base64').toString();
eval(_0x4a2b);
This is not sophisticated obfuscation. It is just enough to avoid naive string matching, and it works because most developers do not read the source of every package they install.
Where AI Changes the Equation
The pre-AI version of this operation had a bottleneck: convincing social engineering at scale requires human labor. Writing a personalized message to a developer, referencing their actual projects, matching the tone of a real recruiter, adjusting for timezone and language nuance, all of that takes time per target. Lazarus was doing it, but the volume was limited by the operator headcount available to run the campaigns.
LLMs remove that bottleneck almost entirely.
Generating a fake recruiter persona with a coherent LinkedIn-style backstory, a set of company references, and a personalized outreach message for a specific developer’s background takes seconds with an LLM. The messages are grammatically correct, contextually appropriate, and harder to flag by the usual heuristics: unusual phrasing, awkward English, generic templating. Researchers at Mandiant and others have noted that North Korean-attributed phishing quality improved noticeably starting in late 2023, correlating with widespread LLM availability.
The industrialization aspect goes further than just message generation. AI can be used to:
- Generate plausible fake company websites for the front organizations Lazarus uses as employer covers
- Produce varied versions of the malicious npm package README files, making them look like legitimate open source projects with documentation, changelogs, and usage examples
- Synthesize profile photos for fake recruiter identities (a capability that predates LLMs but is now more accessible)
- Adapt lure content to different geographies, industries, and seniority levels without manual localization
The result is that what previously required a team of operators writing individual messages can now be a largely automated pipeline. One human supervises, the AI generates the surface area.
The North Korean IT Worker Problem Compounds This
Running parallel to the Lazarus attack campaigns is a separate but related problem: North Korean nationals using AI-generated identities to get hired as remote developers at Western companies. The FBI and CISA issued warnings about this in 2023 and 2024. These are not passive attackers; they are inside your company with legitimate access, using that access to exfiltrate intellectual property and credentials, and sending the salary back to fund North Korean weapons programs.
The connection to AI is the same. Maintaining a convincing developer persona through a hiring process, technical interviews, onboarding, and regular work used to require skilled operators. AI tools lower the skill floor significantly. An operator with moderate English and some coding knowledge can now pass technical screens with AI assistance and maintain believable Slack presence over months.
This creates a two-vector threat for companies: external attack through malicious packages, and internal threat through fraudulent hiring. Both vectors target developers specifically because developers have privileged access to codebases, secrets, and infrastructure.
What the Target Profile Looks Like
Lazarus is not spraying these attacks broadly. The targeting is deliberate and tends to concentrate on:
- Developers working in cryptocurrency, DeFi, and blockchain projects
- Engineers at companies with access to significant financial systems
- Open source maintainers with publishing rights to widely-used packages
- Security researchers (a separate sub-campaign involving fake proof-of-concept repositories)
The open source maintainer angle is particularly concerning. Compromising a maintainer account on npm or PyPI gives an attacker the ability to push malicious updates to packages with existing install bases. This is the supply chain attack path, and it has been used: the XZ Utils backdoor in 2024, while not attributed to Lazarus, demonstrated exactly how long and patient this kind of operation can be. Lazarus has the resources and the incentive to run multi-year maintainer compromise operations.
Practical Detection and Defense
The defenses here are not exotic, but they require discipline.
Package scrutiny. Tools like Socket and Phylum do behavioral analysis on npm packages, flagging things like eval of base64-decoded strings, outbound network calls in install scripts, and access to credential stores. These are not perfect, but they catch a category of threat that npm audit does not address at all. Running them in CI before any new dependency lands in a project is low friction and meaningful.
Disable postinstall scripts by default. npm’s --ignore-scripts flag prevents install lifecycle hooks from running. Most packages do not need them. The ones that do will fail visibly. This single flag eliminates the most common BeaverTail delivery vector.
npm install --ignore-scripts
# or set permanently:
npm config set ignore-scripts true
Treat coding challenges from recruiters as untrusted code. Run them in a VM or a container with no access to the host filesystem, no browser credential access, and no persistent network egress. This is the correct security posture regardless of threat actor.
Verify recruiter identity through out-of-band channels. If someone claiming to be from a real company contacts you about a job, look up the company’s actual recruiting contacts independently. Do not follow links in the initial message.
For companies: tighten your hiring pipeline against the IT worker problem. Video verification during hiring, identity document checks, and monitoring for patterns like all salary being immediately wire-transferred abroad have all been cited as detection signals. Geolocation anomalies between stated location and actual IP addresses are another flag.
The Structural Problem
What makes this situation genuinely difficult is that Lazarus is exploiting conventions that exist for good reasons. Developers share code. Package managers exist to distribute reusable components. Remote hiring is common. Coding challenges are a reasonable hiring practice. The attack surface is not a vulnerability in any traditional sense; it is the texture of how software development works.
AI does not create this surface. It just reduces the cost of exploiting it to the point where a state actor with limited resources can run a persistent, high-volume campaign against the global developer population. The funding motive is also not going away. North Korea uses these operations to finance its weapons programs, which means the incentive structure is divorced from anything market-based. There is no profit margin to optimize, no risk calculation that causes a criminal enterprise to pivot to easier targets. It is a state mission.
The Expel analysis is worth reading in full for the detection-oriented perspective. But the broader takeaway is that the developer community needs to internalize that it is a specific, deliberate target of a well-resourced adversary, and the attack vectors are designed to blend into normal workflow. The friction of running untrusted code in isolation, or of verifying a recruiter’s identity, is worth building as habit. The alternative is finding out your credentials and crypto wallets were exfiltrated by a fake job interview you almost remembered to be suspicious about.