As reported by SecurityAffairs, Iran-linked APT group Mirage Kitten has been delivering two previously undocumented malware families—NodeRabbit and PollCat—through fake LinkedIn recruiting campaigns disguised as coding assessments. What makes this campaign particularly notable is the threat actor's explicit instruction to candidates not to use AI assistants during the test, a deliberate move to prevent the one class of tool most likely to flag the trojanized npm package hidden in the project.

Threat Intelligence: As reported by SecurityAffairs, Iran-linked APT group Mirage Kitten has been delivering two previously undocumented malware families—NodeRabbit and PollCat—through fake LinkedIn recruiting campaigns disguised as coding assessments.

This is not just another spear-phishing variant. It represents a convergence of three trends that defenders need to understand: the abuse of trusted recruitment workflows, the shift to cross-platform runtime languages for malware development, and the adversarial manipulation of AI-assisted code review as a detection layer.

Why the Recruitment Vector Works

Software engineers expect to receive coding challenges from recruiters. They expect to download archives, run npm install, and execute unfamiliar code within tight time constraints. The three-hour deadline creates artificial urgency that suppresses caution. Hosting the payload on Amazon S3 adds a veneer of legitimacy—threat hunting teams rarely flag S3 downloads in isolation. The social engineering is elegant precisely because it exploits normal professional behavior rather than tricking users into doing something obviously wrong.

The "no AI assistants" rule is the most telling detail. Mirage Kitten recognized that an AI code-review tool would likely flag the suspicious first-line import of an unknown npm package. Banning AI isn't about test integrity—it's about removing the automated detection layer before the victim ever executes the payload.

NodeRabbit: A Platform Shift Worth Watching

Mirage Kitten historically relied on C, C++, and Go for implants. NodeRabbit's use of Node.js is significant for several reasons:
  • Cross-platform by default: A single codebase runs on Windows, Linux, and macOS, expanding the target surface without additional development effort.
  • Blends into developer environments: Node.js processes are ubiquitous on developer machines, making behavioral detection harder.
  • Supply-chain adjacency: Embedding the payload in a local npm package rather than publishing it to the registry avoids package ecosystem scanning tools.
  • Evasion maturity: Sandbox checks for memory, CPU core count, and uptime indicate the operator is actively iterating against analysis environments.
  • C2 on Azure: Using AES-256-GCM encrypted communications to Azure-hosted infrastructure blends C2 traffic with legitimate cloud activity.

Who Is at Risk

The primary targets are software engineers and developers in regions of interest to Iranian intelligence operations, including Afghanistan and Egypt based on Kaspersky's findings. However, the tradecraft is transferable. Any organization that employs developers who actively job-seek on platforms like LinkedIn is exposed to this vector. Industries with high developer turnover—tech, fintech, defense contracting, and telecommunications—face elevated risk. Developers with access to source code repositories, CI/CD pipelines, or internal infrastructure are high-value targets whose compromise can lead to downstream supply-chain attacks.

Broader Implications

This campaign should prompt a reassessment of how organizations think about third-party risk in the hiring process. We typically frame supply-chain risk around vendors and open-source dependencies. Mirage Kitten demonstrates that the recruitment workflow itself is a supply-chain vector. A developer who runs trojanized code on a personal machine may exfiltrate credentials, SSH keys, or session tokens that grant access to corporate systems long after the initial compromise.

The anti-AI instruction also reveals something about threat actor psychology: they perceive AI-assisted code review as a meaningful defensive layer. This is useful intelligence. It means organizations should be encouraging—not discouraging—the use of AI code analysis tools for any code entering the environment from external sources.

Shield53 Recommendations

For Security Teams

Shield53 Recommendations
Alert on recruitment-themed lures: Develop detection rules for inbound LinkedIn messages containing S3 links, archive downloads, or coding challenge attachments—especially targeting developer endpoints.
Monitor for Node.js C2 patterns: Look for Node.js processes initiating outbound encrypted connections to Azure endpoints, particularly from developer workstations where such activity may be anomalous.
Sandbox all external code: Enforce a policy that any code received from external sources—including job assessments—must be executed in isolated environments, not on primary workstations.
Hunt for NodeRabbit and PollCat IOCs: Search endpoint telemetry for the undocumented npm packages, AES-256-GCM encrypted outbound traffic from Node processes, and the sandbox-evasion system checks described in Kaspersky's report.
Brief developer teams: Make developers aware that recruitment social engineering is an active APT vector. The awareness should be specific: do not execute coding challenges on machines with access to corporate source code or credentials.

For Developers

  • Treat any unsolicited coding challenge as untrusted code until reviewed in an isolated environment.
  • Use AI code-review tools on every external project before execution—ignore any instruction not to.
  • Inspect package.json and the first lines of any entry-point files for unexpected imports before running npm install.
  • Never run recruitment coding challenges on machines with SSH keys, cloud credentials, or corporate VPN access.

Mirage Kitten's campaign is a reminder that threat actors are studying our defensive tools and adapting. The fact that they felt the need to ban AI assistants tells us something important: automated code analysis works. The defensive community should lean into that advantage rather than abandon it.