PolinRider DPRK Supply-Chain Campaign: Confirmed GitHub Footprint Grows 6.5x Since March (JADESNOW/Beavertail/InvisibleFerret Loaders, DEV#POPPER & OmniStealer Payloads)
PolinRider DPRK Supply-Chain Campaign (TL-2026-1435), also tracked as PolinRider, is a high-severity supply-chain compromise, first published 2026-07-17. It is attributed to PolinRider (North Korea) with high confidence, affects GitHub Public GitHub repositories, maps to 32 MITRE ATT&CK techniques (T1005, T1027, T1033), and is covered by 9 detection rules and 49 indicators of compromise.
Key facts for TL-2026-1435
- Threat ID
- TL-2026-1435
- Also known as
- PolinRider, JADESNOW campaign, TasksJacker
- Severity
- HIGH
- Status
- ACTIVE
- Category
- SUPPLY_CHAIN
- First published
- 2026-07-17
- Last reviewed
- 2026-07-17
- Attribution
- PolinRider
- Attribution confidence
- HIGH
- Nation-state nexus
- North Korea
- Motivation
- FINANCIAL
- Target sectors
- technology, software-development, cryptocurrency, fintech, open-source-ecosystem
- Target regions
- Global
- Detection rules
- 9
- Indicators of compromise
- 49
Malware and tooling in PolinRider DPRK Supply-Chain Campaign
Malware and tooling: BeaverTail - S1246, DEV#POPPER, InvisibleFerret - S1245, JADESNOW, OmniStealer
PolinRider, a DPRK-linked threat actor tied to the Contagious Interview / Famous Chollima cluster, has implanted obfuscated JavaScript loaders (tracked as JADESNOW, delivering Beavertail and InvisibleFerret) across public GitHub repositories, npm, Go modules, Packagist, and Chrome extensions. Confirmed footprint grew from 675 repositories (March 2026) to over 1,951 repositories and 108+ malicious packages (July 2026), a 6.5x increase, with payloads retrieved via blockchain dead-drops on TRON, Aptos, and BNB Smart Chain.
How PolinRider DPRK Supply-Chain Campaign works
PolinRider is an active, expanding DPRK state-sponsored supply-chain compromise campaign first disclosed in March 2026 by the OpenSourceMalware (OSM) research team and further detailed by Socket's Threat Research Team in July 2026. The campaign is attributed to North Korean threat actors operating within the broader Contagious Interview / Famous Chollima activity cluster (which also encompasses DeceptiveDevelopment, Operation Dream Job, and ClickFake Interview), and shares strong infrastructure and tooling overlaps with the previously tracked TasksJacker campaign, indicating repurposed state-sponsored infrastructure across multiple named operations.
The campaign began no later than December 2025/January 2026 (anti-dated malicious commits were inserted into 7span/sevenspan-maintained repositories as early as January 8, 2026) and has escalated steadily: 675 repositories across 352 owners were confirmed compromised at initial disclosure (March 8, 2026); by April 11-12, 2026 that grew nearly 3x to 1,951 repositories across 1,047 unique owners (~930 individuals, ~117 organizations); by July 2026 Socket confirmed cross-ecosystem expansion representing an overall 6.5x growth in confirmed footprint since the March baseline, with 162 malicious release artifacts identified across 108-111 unique packages and extensions spanning npm, Packagist (10 PHP packages under the sevenspan namespace), Go modules (80+ modules, 61 confirmed distinct malicious versions), and Chrome/browser extensions (1-2 identified).
The attackers use several parallel initial-access vectors. First, they compromise legitimate maintainer GitHub accounts (via account takeover, likely including expired-domain takeover of maintainer emails) and inject malicious commits directly into trusted repositories, frequently rewriting git history and force-pushing with anti-dated timestamps via a Windows batch script (temp_auto_push.bat / config.bat variant) to make the malicious changes appear to predate detection tooling and to bypass pre-commit hooks. Second, they distribute trojanized VS Code extensions and weaponized take-home coding-assessment repositories disguised as legitimate technical interview projects for job candidates (two identified templates: "ShoeVista", an e-commerce MERN-stack test targeting full-stack developers, and "StakingGame", a blockchain deployment test targeting Web3 developers, UUID e9b53a7c-2342-4b15-b02d-bd8b8f6a03f9). These projects embed `.vscode/tasks.json` configuration files with `"runOn": "folderOpen"` triggers that automatically execute Node.js/shell commands (curl | bash patterns) the moment the victim opens the project folder in VS Code, without requiring any further user interaction.
Once triggered, the initial loader — heavily obfuscated JavaScript appended after valid content in legitimate build/config files (postcss.config.js, vite.config.js, eslint.config.js, tailwind config files) — is padded with excessive whitespace to push the malicious code beyond the default editor screen width, hiding it from casual code review. The loader implements a custom "4-layer shuffle-cipher" decoder identified by variant markers `rmcej%otb%` (original variant) or `Cot%3t=shtP` (rotated variant), plus an additional loader signature `_$_1e42`. A second concealment technique embeds JavaScript payloads inside files disguised as WOFF2 web font binaries (fake .woff2 files) to evade static and signature-based security scanning.
The loader's second stage retrieves encrypted payload material from immutable, attacker-controlled transactions recorded on public blockchain/RPC infrastructure — TRON, Aptos, and BNB Smart Chain — functioning as a resilient, takedown-resistant dead-drop C2 channel. Retrieved payloads are decrypted using embedded XOR keys (`2[gWfGj;<:-93Z^C` and `m6:tTh^D)cBz?NM]`) and executed directly via JavaScript `eval()`. This blockchain dead-drop technique is functionally identical to JADESNOW-class loaders and overlaps with prior Lazarus Group / Contagious Interview tradecraft.
The decrypted stage-3 payload is the Beavertail JavaScript loader/stealer, which performs host and OS fingerprinting, browser and system reconnaissance, and exfiltration staging, then conditionally deploys OS-specific follow-on payloads. On Windows, macOS, and Linux targets this results in delivery of InvisibleFerret, a cross-platform backdoor providing keylogging, clipboard hijacking, persistent remote access, browser-stored credential theft, and cryptocurrency wallet file exfiltration, communicating over an attacker C2 channel. Socket's later reporting additionally documents delivery of DEV#POPPER (a remote-access trojan enabling arbitrary command execution) and OmniStealer (an information stealer using socket.io-client for its C2 channel, performing credential theft, browser-data theft, and cryptocurrency wallet exfiltration).
Additional observed C2 and staging infrastructure includes a cluster of Vercel-hosted subdomains used as configuration/bootstrap relays (260120.vercel.app, default-configuration.vercel.app, vscode-settings-bootstrap.vercel.app, vscode-settings-config.vercel.app, vscode-bootstrapper.vercel.app, vscode-load-config.vercel.app), plus onrender.com and the short.gy URL-shortening service used to obscure payload-delivery links.
Because GitHub repository write access and package-registry publishing access are frequently one and the same in the Go module and Packagist ecosystems, a single compromised maintainer GitHub account automatically republished malicious content to downstream package registries without requiring separate registry credentials — a key mechanism behind the campaign's rapid cross-ecosystem expansion in June-July 2026. A concentrated, synchronized modification of repositories maintained by GitHub account Xpos587 (including Xpos587/git2md, Xpos587/markfetch, and Artiffusion-Inc/mirofish) occurred within a narrow window beginning 10:00 UTC on June 23, 2026, coinciding with the spike in malicious Go module releases. Confirmed compromised npm packages include a cluster of fake Tailwind CSS utility packages (tailwindcss-style-animate, tailwind-mainanimation, tailwind-autoanimation, tailwindcss-typography-style, tailwindcss-animate-style, tailwindcss-style-modify) using postinstall hooks to trigger the loader at install time. Confirmed compromised Packagist packages (10, under the sevenspan/7span namespace and affiliated maintainers) include thiio/kubernetes-php-sdk, arsl/optima-class, olc/olc-php, sevenspan/laravel-whatsapp, adxio/twig-hmvc, sevenspan/code-generator, lambda-platform/moqup, roberts/leads, sevenspan/plusinfolab/logstation, and plusinfolab/logstation. Some 7span maintainers performed partial remediation on May 16, 2026 (removing fake font-file payloads), but the underlying injected loaders and Go/Packagist artifacts persisted and continued to expand afterward, with Socket confirming cross-ecosystem compromise as current as July 1, 2026 and the wider campaign still classified as actively expanding at the July 15, 2026 report date underlying this hunt.
No CVE has been assigned; this is a social-engineering-driven and account-takeover-driven supply-chain compromise rather than a software vulnerability, so exploitability is scored ACTIVE based on ongoing, confirmed real-world use rather than PoC public availability.
MITRE ATT&CK techniques used in TL-2026-1435
Collection
T1005 Data from Local System; T1115 Clipboard Data
Defense Evasion
T1027 Obfuscated Files or Information; T1036 Masquerading; T1070 Indicator Removal; T1140 Deobfuscate/Decode Files or Information; T1564 Hide Artifacts
Discovery
T1033 System Owner/User Discovery; T1082 System Information Discovery
Exfiltration
T1041 Exfiltration Over C2 Channel
Execution
T1053 Scheduled Task/Job; T1059 Command and Scripting Interpreter; T1204 User Execution
Credential Access
T1056 Input Capture; T1555 Credentials from Password Stores
Command and Control
T1071 Application Layer Protocol; T1102 Web Service; T1105 Ingress Tool Transfer; T1573 Encrypted Channel
Persistence
T1098 Account Manipulation; T1505 Server Software Component; T1554 Compromise Host Software Binary
Initial Access
T1195 Supply Chain Compromise; T1199 Trusted Relationship; T1566 Phishing
Resource Development
T1583 Acquire Infrastructure; T1584 Compromise Infrastructure; T1585 Establish Accounts; T1586 Compromise Accounts; T1587 Develop Capabilities
Reconnaissance
T1593 Search Open Websites/Domains
Impact
Affected products and versions in PolinRider DPRK Supply-Chain Campaign
- GitHub — Public GitHub repositories
Vulnerable versions: N/A - account takeover / malicious commit injection, not a software version - npm — npm registry packages (Tailwind CSS utility clones and others)
Vulnerable versions: tailwindcss-style-animate (all published versions); tailwind-mainanimation (all published versions); tailwind-autoanimation (all published versions); tailwindcss-typography-style (all published versions); tailwindcss-animate-style (all published versions); tailwindcss-style-modify (all published versions) - Packagist — PHP Composer packages (sevenspan/7span namespace and affiliates)
Vulnerable versions: thiio/kubernetes-php-sdk; arsl/optima-class; olc/olc-php; sevenspan/laravel-whatsapp; adxio/twig-hmvc; sevenspan/code-generator; lambda-platform/moqup; roberts/leads; plusinfolab/logstation - Go — Go modules (proxy.golang.org indexed)
Vulnerable versions: 80+ Go modules, 61 confirmed distinct malicious versions (module names tracked on Socket's live incident page) - Google Chrome — Chrome Web Store extensions
Vulnerable versions: 1-2 malicious extensions identified - Microsoft — Visual Studio Code (trojanized extension / weaponized tasks.json)
Vulnerable versions: Any developer environment that installed the trojanized VS Code extension or opened a weaponized ShoeVista/StakingGame assessment repository
Remediation for PolinRider DPRK Supply-Chain Campaign
Immediate actions
- Treat any environment that installed an affected npm, Packagist, Go module, or Chrome extension version as potentially compromised and rebuild from a known-clean state
- Audit .vscode/tasks.json across all cloned repositories for runOn: folderOpen entries invoking shell/curl commands and remove them before opening projects in VS Code
- Search build/config files (postcss.config.js, vite.config.js, eslint.config.js, tailwind.config.js) for appended obfuscated JavaScript beyond the visible editor width
- Scan repositories for suspicious .woff2 files that contain executable JavaScript rather than valid font binaries
- Review git logs for force-pushes and history rewrites with anti-dated commit timestamps, especially around maintainer account activity anomalies
- Block outbound connections to known C2 relay domains (*.vercel.app bootstrap subdomains, onrender.com endpoints, short.gy) from developer workstations and CI runners
- Rotate credentials, browser-stored passwords, and cryptocurrency wallet keys on any system where InvisibleFerret, DEV#POPPER, or OmniStealer execution is suspected
Workarounds
- Disable automatic VS Code task execution (runOn: folderOpen) globally via VS Code settings (task.allowAutomaticTasks: off) until a repository has been manually reviewed
- Avoid opening unsolicited take-home coding assessment repositories in an environment with access to production credentials, SSH keys, or cryptocurrency wallets
Longer-term hardening
- Enforce mandatory MFA and hardware security keys for all GitHub/npm/Packagist/Go module maintainer accounts to prevent account takeover
- Adopt package-registry publishing tokens scoped independently from source-repository write access to break the repo-compromise-to-registry-publish chain
- Deploy pre-merge static analysis / diffing tooling that flags whitespace-padded or appended code in configuration files
- Require code review and CI provenance verification (e.g., Sigstore/SLSA attestation) before merging dependency or config-file changes from external contributors
- Educate developers, especially those responding to unsolicited recruiting/technical-interview outreach, on the Contagious Interview social-engineering pattern
- Monitor blockchain RPC egress from developer and CI environments as an anomaly signal, since legitimate build tooling rarely queries TRON/Aptos/BSC endpoints
Weaknesses (CWE) in PolinRider DPRK Supply-Chain Campaign
CWE-506, CWE-829, CWE-494
Timeline of PolinRider DPRK Supply-Chain Campaign
- Anti-dated malicious commits inserted into 7span/sevenspan-maintained repositories, later discovered to predate all other observed campaign activity.
- OpenSourceMalware (OSM) publishes initial PolinRider disclosure documenting 675 compromised GitHub repositories across 352 unique owners.
- 821 new threat reports filed against PolinRider-linked repositories within a two-day window (April 10-11, 2026).
- OSM confirms 1,951 compromised public GitHub repositories across 1,047 unique owners (~930 individuals, ~117 organizations) — a 2.9x increase in five weeks.
- OSM classifies the initial GitHub-footprint tracking phase of the campaign as "Finalized" while continuing to monitor for cross-ecosystem spread.
- 7span maintainers perform partial cleanup, removing malicious fake .woff2 font-file payloads from affected repositories; underlying loader injections and downstream package artifacts persist.
- Synchronized modification of repositories maintained by GitHub account Xpos587 (git2md, markfetch, Artiffusion-Inc/mirofish) beginning 10:00 UTC, coinciding with a spike in malicious Go module releases.
- Socket Threat Research Team publishes findings confirming cross-ecosystem compromise across npm, Packagist, Go modules, and Chrome extensions — 162 malicious release artifacts across 108-111 unique packages.
- Follow-up reporting (Malpedia/OSM) confirms PolinRider's overall footprint has grown 6.5x since the March 2026 baseline disclosure, indicating the campaign remains active and escalating.
Sources cited for PolinRider DPRK Supply-Chain Campaign
- PolinRider Confirmed Footprint Grows 6.5x Since March
- PolinRider: North Korea-Linked Supply Chain Campaign Expands Across Open Source Ecosystems
- PolinRider Campaign: DPRK-Linked Supply Chain Attack Infects GitHub Repositories
- PolinRider DPRK Attack Expands Across GitHub
- PolinRider: A detailed technical dossier on the DPRK threat actor
- North Korean Hackers Target Open Source Developers in Supply Chain Attacks
- PolinRider Jumps the Fence to Go, Packagist, npm, PyPI
- PolinRider supply chain attack - Cloud Threat Landscape
- PolinRider DPRK Supply-Chain Campaign - Malicious npm and VS Code Artifacts Infect 1,900+ GitHub Repositories
- PolinRider Campaign (mirror)
Threats related to PolinRider DPRK Supply-Chain Campaign
- PolinRider Campaign: North Korea-Linked Supply Chain Attack Expands Across npm, Packagist, Go Modules, and Chrome Web Store (DEV#POPPER / OmniStealer)
- ChainVeil and ViteVenom Malware Linked to DPRK PolinRider Supply-Chain Campaign
- PolinRider — DPRK Supply-Chain Campaign Compromises 1,951 GitHub Repos via Malicious npm Packages, VS Code tasks.json Auto-Run, and TRON/Aptos/BSC Blockchain Dead-Drop C2
- PolinRider: North Korea-Linked Supply Chain Campaign Expands Across npm, Packagist, Go Modules, and Chrome Extensions
- PolinRider: DPRK Supply-Chain Campaign Hides BeaverTail/InvisibleFerret Malware in JS Build Config Files (tailwind.config.js et al.)
- astro.config.mjs Supply Chain Attack via Blockchain Dead-Drop C2 (PolinRider / js.jadesnow)
Detection coverage for TL-2026-1435
As of 2026-07-17, Threadlinqs Intelligence publishes 9 detection rule(s) for TL-2026-1435 across Splunk SPL, Microsoft KQL and Sigma, covering 49 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.