Joyfill npm Supply Chain Compromise Analysis
Score: 9/10

Joyfill npm Supply Chain Compromise Analysis

PolinRider threat actors hijacked two Joyfill npm packages to distribute an obfuscated five-stage malware chain using blockchain-based C2 resolution and a Python credential stealer.

Executive Summary

On July 28, 2026, two legitimate npm packages, @joyfill/components and @joyfill/layouts, were compromised via hijacked maintainer accounts or CI/CD workflows. The attacker published malicious beta versions (2773 series) containing a heavily obfuscated remote access trojan (RAT) known as PolinRider. The malware is notable for its 'import-time' execution, meaning it triggers when the library is required in code rather than during installation, bypassing security controls that only monitor install hooks.

The attack utilizes a sophisticated five-stage chain that leverages public blockchain transactions (Tron, BNB Smart Chain, and Aptos) to resolve its command-and-control (C2) infrastructure. This technique effectively hides the attacker's final server address from static analysis and registry scanners. The final stage deploys a Socket.IO RAT and a Python-based credential stealer designed to exfiltrate browser data, SSH keys, and cloud provider credentials.

This campaign represents a critical risk to developer workstations and CI/CD pipelines. By infecting the global npm CLI, the malware achieves persistence and potential self-propagation, turning every subsequent package publish from an infected machine into a new supply chain vector. Affected organizations should immediately audit their lockfiles and rotate all credentials present on systems where these versions were loaded.

Key Details

Threat Name

Joyfill npm Supply Chain Compromise

Affects

—

Adversary

PolinRider

Malware/Tools

Socket.IO remote access trojan, Python credential stealer, PolinRider, Miasma RAT

Report Score

9out of 10
Quality Score
Excellent
IOC Quality9
TTP Details9
Detection Guidance7
Enterprise Relevance9
Clarity & Structure9
Technical Depth10

Sources