North Korean Contagious Interview Campaign Deploys OtterCookie via SVG Steganography to Steal Developer Credentials

North Korean Contagious Interview Campaign Deploys (TL-2026-1571), also tracked as OtterCookie SVG Steganography Campaign, is a high-severity malware campaign, first published 2026-07-20. It is attributed to Contagious Interview (North Korea) with high confidence, affects npm / Node.js ecosystem Developer workstations (Windows, macOS, Linux), maps to 33 MITRE ATT&CK techniques (T1005, T1027.010, T1033), and is covered by 9 detection rules and 31 indicators of compromise.

Key facts for TL-2026-1571

Threat ID
TL-2026-1571
Also known as
OtterCookie SVG Steganography Campaign, REF9403
Severity
HIGH
Status
ACTIVE
Category
MALWARE
First published
2026-07-20
Last reviewed
2026-07-20
Attribution
Contagious Interview
Attribution confidence
HIGH
Nation-state nexus
North Korea
Motivation
FINANCIAL
Target sectors
technology, softwaredevelopment, cryptocurrency, web3, fintech
Target regions
Global
Detection rules
9
Indicators of compromise
31

Malware and tooling in North Korean Contagious Interview Campaign Deploys

Malware and tooling: BeaverTail - S1246, InvisibleFerret - S1245, OtterCookie, obfuscator.io

DPRK-aligned threat actors tracked as Contagious Interview (campaign REF9403) are impersonating recruiters running fake coding-interview assessments to lure software developers into executing trojanized Next.js e-commerce repositories. The malicious payload is fragmented into Base64 chunks hidden in HTML comments inside SVG flag-icon images and reassembled at runtime, ultimately deploying a four-stage OtterCookie-aligned infostealer/RAT that harvests browser credentials, crypto wallets, files, and clipboard data over a Socket.IO C2 channel.

How North Korean Contagious Interview Campaign Deploys works

Elastic Security Labs (researcher Daniel Stepanic) disclosed on 2026-07-17 a new delivery technique used by the DPRK-aligned Contagious Interview cluster (tracked internally as REF9403), part of the long-running 'Contagious Interview'/'DeceptiveDevelopment' ecosystem that has used fake job interviews to target software developers since at least November 2023. In the newly documented wave, a threat actor persona named 'Maxwell' posted in Elastic's community Slack #jobs channel around 2026-05-26 soliciting an experienced developer for an e-commerce platform upgrade. Interested candidates were moved to direct messages and instructed to complete a coding assessment by cloning a trojanized fork of the legitimate Next.js GoCart e-commerce template (originally from GreatStackDev), distributed as ZIP archives such as next-ecommerce-private-main.zip, ecommerce-platform-main.zip, shopping-platform-main.zip, and shop-main.zip.

The core innovation is SVG-based steganography: the malicious JavaScript payload is split into Base64-encoded fragments embedded inside HTML comments across a set of SVG flag-icon assets (AE.svg, AF.svg, and other country-code flags) placed in the project's assets directory. A file named serverValidation.js, triggered on server boot / npm install, reads every SVG flag file in alphabetical order, extracts the embedded Base64 comment fragments, concatenates them, decodes the result via a custom Check() function, and executes it with eval() — a technique designed to defeat static string-matching and signature-based detection since no single file contains the complete malicious payload.

Once reconstructed and executed, the payload deploys a four-stage, cross-platform (Windows/macOS/Linux) capability set aligned with the OtterCookie malware family (js.otter_cookie), which itself evolved from the BeaverTail (first-stage stealer/downloader) and InvisibleFerret (RAT) lineage — the boundaries between these families have blurred as DPRK operators converge toward a single all-in-one implant:

Stage 1 — Browser Credential & Crypto Wallet Stealer: masquerades its process as 'npm-cache'; harvests saved browser credentials and autofill data; targets roughly 25 cryptocurrency wallet browser-extension databases (MetaMask, Phantom, Keplr, UniSat, and others); exfiltrates the macOS System Keychain.

Stage 2 — File Stealer: performs recursive filesystem sweeps for developer secrets — .env* files, .doc/.docx, .pdf, .pem, SSH keys (.ssh), and cloud credential directories (.aws, .azure); enumerates logical drives on Windows via `wmic logicaldisk get name`; notably excludes AI coding-assistant configuration directories (.claude, .cursor, .gemini, .windsurf, .pearai, .llama) from its own targeting, an operational-security choice to avoid disturbing tooling the operators may themselves rely on or to reduce noisy detections.

Stage 3 — Socket.IO-based Remote Access Trojan: establishes a persistent HTTPS Socket.IO command-and-control channel; enforces single-instance execution using a PID lock file; performs VM/sandbox detection across Windows, macOS, and Linux; provides an interactive remote shell via child_process.exec() for arbitrary command execution.

Stage 4 — Clipboard Stealer & Windows Second-Stage Dropper: polls the system clipboard every 500ms on Windows and macOS (commonly used to hijack copied cryptocurrency wallet addresses); on Windows, downloads three additional binaries disguised with .txt extensions and later renamed to executables — hostService.txt to hostService.exe, printSvc.txt to printSvc.exe, and dhcpSvc.txt to dhcpSvc.exe.

The JavaScript payload is protected with obfuscator.io, using string-array extraction with index-based lookups, a self-rotating array for anti-tampering, and infinite while(!![]) loop obfuscation patterns to hinder analysis. At time of discovery the trojanized repositories reportedly triggered zero antivirus detections.

Command-and-control infrastructure centers on the domain rightwidth[.]dev and subdomains: ldb.rightwidth[.]dev (browser/wallet stealer C2), upload.rightwidth[.]dev (file stealer upload endpoint), controller.rightwidth[.]dev (Socket.IO RAT C2), and file.rightwidth[.]dev (Windows second-stage binary download), backed by IP addresses 195.26.248[.]212 and 188.40.64[.]61. Known C2 API endpoints include /api/service/makelog (logging channel), /api/service/process/<uid> (registration beacon), /cldbs (cryptocurrency wallet exfiltration), and /upload (file/credential uploads).

The same DPRK operator ecosystem has in parallel run a large-scale npm supply-chain sub-campaign: Socket researchers documented 197 newly identified malicious npm packages (31,000+ combined downloads) distributing OtterCookie-aligned payloads, including typosquatted/decoy packages such as tailwind-magic, tailwind-node, node-tailwind, node-tailwind-magic, and react-modal-select, alongside lure repositories like a cloned 'dexproject' impersonating the Knightsbridge DEX and a typosquat of tailwind-merge. Delivery infrastructure for this sub-campaign includes a Vercel-hosted staging site (tetrismic[.]vercel[.]app) serving second-stage JavaScript via postinstall scripts, a now-removed GitHub account 'stardev0914' that hosted 18 malicious repositories, and abuse of third-party JSON-hosting services (JSON Keeper, JSONsilo, npoint.io) to store and relay payloads — reflecting a factory-style operational model treating npm, GitHub, and Vercel as a combined, renewable initial-access channel. Prior related waves (reported by JFrog and others) used bogus Rollup-polyfill-impersonating npm packages and are attributed to the same cluster; researchers note overlapping API endpoint patterns and infrastructure with previously reported JFrog findings and behavioral alignment with Microsoft's March 2026 DPRK reporting, as well as separately-tracked activity (UNC1069) that compromised the Axios npm package via Slack-based social engineering.

Targeting is centered on individual software developers and Web3/crypto engineers reached through developer communities (Slack, LinkedIn, GitHub, npm) rather than direct enterprise infrastructure — a deliberate strategy to gain initial access to organizations indirectly through compromised developer endpoints, credentials, and source-code access, consistent with DPRK's dual espionage/revenue-generation motivations (cryptocurrency theft funds weapons programs) documented across the broader Contagious Interview / DeceptiveDevelopment ecosystem since 2023.

MITRE ATT&CK techniques used in TL-2026-1571

Collection

T1005 Data from Local System; T1113 Screen Capture; T1115 Clipboard Data; T1119 Automated Collection

Defense Evasion

T1027.010 Command Obfuscation; T1036.005 Match Legitimate Resource Name or Location; T1070.004 File Deletion; T1140 Deobfuscate/Decode Files or Information; T1497.001 System Checks

Discovery

T1033 System Owner/User Discovery; T1082 System Information Discovery; T1083 File and Directory Discovery; T1497.001 System Checks

Exfiltration

T1041 Exfiltration Over C2 Channel

Credential Access

T1056.001 Keylogging; T1552.001 Credentials In Files; T1555.003 Credentials from Web Browsers

Execution

T1059.007 JavaScript; T1106 Native API; T1204.002 Malicious File

Command and Control

T1071.001 Web Protocols; T1102 Web Service; T1105 Ingress Tool Transfer; T1573 Encrypted Channel

Initial Access

T1195.002 Compromise Software Supply Chain; T1199 Trusted Relationship; T1566 Phishing; T1566.003 Spearphishing via Service

Persistence

T1547.001 Registry Run Keys / Startup Folder

Resource Development

T1583.001 Domains; T1585 Establish Accounts; T1586.001 Social Media Accounts; T1587.001 Malware

Impact

T1657 Financial Theft

Affected products and versions in North Korean Contagious Interview Campaign Deploys

  • npm / Node.js ecosystem — Developer workstations (Windows, macOS, Linux) via trojanized npm packages and cloned Git repositories
    Vulnerable versions: N/A - social engineering / trojanized package delivery, not a versioned vulnerability
    Fixed in: N/A

Remediation for North Korean Contagious Interview Campaign Deploys

Immediate actions

  • Block C2 domain rightwidth[.]dev and all subdomains (ldb, upload, controller, file) at DNS/proxy layer
  • Block C2 IP addresses 195.26.248.212 and 188.40.64.61 at network perimeter/firewall
  • Block Vercel staging domain tetrismic.vercel.app
  • Search endpoint and EDR telemetry for process names 'npm-cache', hostService.exe, printSvc.exe, dhcpSvc.exe
  • Audit and remove the 197 identified malicious npm packages (tailwind-magic, tailwind-node, node-tailwind, node-tailwind-magic, react-modal-select and related typosquats) from developer environments and CI pipelines
  • Rotate credentials and crypto wallet keys on any developer workstation that cloned or ran the trojanized GoCart e-commerce repositories
  • Search for and quarantine SVG assets containing anomalous Base64 payloads in HTML comments within any recently cloned repositories

Workarounds

  • Never execute untrusted 'coding assessment' repositories outside an isolated, network-restricted sandbox/VM
  • Manually inspect SVG assets and postinstall/build scripts (e.g. serverValidation.js) in any repository received via unsolicited recruiter contact before running npm install

Longer-term hardening

  • Deploy EDR with behavioral detection for eval()-based dynamic code execution in Node.js/npm postinstall scripts
  • Implement npm package allow-listing / private registry proxying with automated malicious-package scanning (e.g. Socket, npm-audit equivalents) before install
  • Train developers on Contagious Interview social-engineering patterns: unsolicited recruiter DMs on Slack/LinkedIn requesting a 'coding assessment' via cloned repository
  • Restrict crypto-wallet browser extensions and enforce hardware wallet usage on developer endpoints
  • Monitor outbound Socket.IO / WebSocket connections from developer workstations to unfamiliar domains

Weaknesses (CWE) in North Korean Contagious Interview Campaign Deploys

CWE-506, CWE-912, CWE-494

Timeline of North Korean Contagious Interview Campaign Deploys

  • Contagious Interview / DeceptiveDevelopment DPRK campaign tracked as active since at least November 2023, using fake job interviews to target software developers.
  • OtterCookie malware family first documented by NTT Security.
  • Socket researchers report 197 newly identified malicious npm packages (31,000+ downloads) distributing OtterCookie-aligned payloads, including tailwind-magic, tailwind-node, node-tailwind, and react-modal-select; Vercel staging site tetrismic.vercel.app and GitHub account stardev0914 (18 repos) identified as delivery infrastructure.
  • Microsoft publishes DPRK threat activity reporting whose behavioral patterns align with this campaign.
  • Candidates who engage are moved to DMs and instructed to clone trojanized Next.js GoCart e-commerce template forks (next-ecommerce-private-main.zip, ecommerce-platform-main.zip, shopping-platform-main.zip, shop-main.zip) as a fake coding assessment.
  • Threat actor persona 'Maxwell' posts a fake e-commerce developer job listing in Elastic's community Slack #jobs channel, initiating the SVG-steganography sub-campaign (tracked as REF9403).
  • The Hacker News, GBHackers, SecurityAffairs, HivePro and other outlets publish follow-on coverage of the campaign.
  • Elastic Security Labs (Daniel Stepanic) publicly discloses the SVG steganography delivery technique, C2 infrastructure (rightwidth[.]dev), and four-stage OtterCookie-aligned payload architecture.

Sources cited for North Korean Contagious Interview Campaign Deploys

Threats related to North Korean Contagious Interview Campaign Deploys

Detection coverage for TL-2026-1571

As of 2026-07-20, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-1571 across Splunk SPL, Microsoft KQL and Sigma, covering 31 indicator(s) of compromise. The whole corpus is readable without an account; a free account unlocks full detection query text in Splunk SPL, Microsoft KQL and Sigma; paid tiers add raw indicator values, correlation and the MCP server. Threadlinqs MCP server · View plans.

Threadlinqs Intelligence — Real-Time Threat Detection Platform

[ 0 threats ] [ 0 det ] [ CRIT: 0 ] [ HIGH: 0 ]
// threat_feed
$ sort --newest
Showing all threats

Latest Threats