Attack chain overview | Image: Microsoft
The job hunt just got a lot more dangerous for software engineers. Microsoft Defender Experts identified a coordinated developer-targeting campaign delivered through malicious repositories disguised as legitimate Next.js projects and technical assessment materials.
By exploiting the high-stress environment of technical interviews, threat actors are tricking developers into downloading their own doom. Telemetry collected during this investigation indicates the activity aligns with a broader cluster of threats that use job-themed lures to blend into routine developer workflows and increase the likelihood of code execution.
Attackers understand that modern development relies heavily on automation, and they have weaponized the very tools engineers use daily. Analysis of the identified repositories revealed three recurring execution paths designed to trigger during normal developer activity:
- Path 1: Visual Studio Code Workspace Execution: Several repositories abuse Visual Studio Code workspace automation to trigger execution as soon as a developer opens (and trusts) the project. By hiding malicious tasks in .vscode/tasks.json configured to run on “folderOpen,” the attackers achieve instant execution.
- Path 2: Build-Time Execution: The second execution path is triggered when the developer manually runs the application, such as with npm run dev or by starting the server directly. The malicious logic is cleverly hidden inside trojanized JavaScript libraries, like jquery.min.js, which look legitimate to the untrained eye.
- Path 3: Server Startup Exfiltration: The third execution path activates when the developer starts the application backend. Upon startup, the malicious loader transmits the highly sensitive process environment (process.env) directly to an attacker-controlled server before executing dynamic remote code.
Across these repositories, the campaign uses multiple entry points that converge on the same outcome: runtime retrieval and local execution of attacker-controlled JavaScript that transitions into staged command-and-control.
The attack unfolds in two distinct stages:
- Stage 1: This functions as a lightweight registrar and bootstrap channel. It profiles the host machine and establishes a durable identity with the attacker’s infrastructure.
- Stage 2: This upgrades the initial foothold into a persistent, operator-controlled tasking client. Operating almost entirely in memory, it allows attackers to browse directories and stage uploads to transfer collected files out of the network.
Why target developers? Because they hold the keys to the kingdom. The objective is to gain execution on developer systems that often contain high-value assets such as source code, environment secrets, and access to build or cloud resources.
When untrusted assessment projects are run on corporate devices, the resulting compromise can expand beyond a single endpoint. Ultimately, the key takeaway is that defenders should treat developer workflows as a primary attack surface and prioritize visibility into unusual Node execution, unexpected outbound connections, and follow-on discovery or upload behavior originating from development machines.
Support Our Threat Intelligence
If you find our CVE report and cybersecurity news helpful, consider supporting our work.