Security researchers at JFrog have disclosed a supply chain attack involving at least two hijacked npm packages and a group of malicious Go packages, all designed to deliver a Python-based information stealer to developer workstations running Windows, Linux, or macOS.

What sets this campaign apart is its deliberate effort to sidestep conventional npm execution triggers. Rather than relying on lifecycle scripts such as preinstall or postinstall, which are among the first execution paths flagged by modern security tooling, the attackers chose a different delivery mechanism. According to JFrog, this approach appears to be a calculated attempt to remain compatible with, and evade the hardened defaults introduced in, npm version 12.

VS Code Tasks as an Execution Vector

The attack chain leverages Visual Studio Code task configuration files to achieve code execution. VS Code tasks allow developers to automate build, test, and deployment steps from within the editor, making them a plausible hiding spot for malicious instructions in environments where developers regularly work with package-heavy projects. By embedding malicious directives in this configuration layer, the attackers gain an execution path that falls outside the scope of package manager-level defenses.

Cross-Platform Python Payload

The final payload is a Python-based infostealer capable of running on all three major operating systems. This cross-platform targeting reflects a broader trend in supply chain attacks aimed at developer toolchains, where the diversity of operating environments among engineers makes platform-agnostic malware especially effective.

Scope and Impact

The campaign spans two ecosystems simultaneously. The npm packages involved were hijacked, meaning legitimate package names with existing user bases were taken over and weaponized. The associated Go packages appear to form a coordinated cluster, suggesting a deliberate, organized effort rather than opportunistic compromise.

Security teams maintaining developer environments should audit VS Code workspace configuration files for unexpected task definitions, review recently updated dependencies in both npm and Go module graphs, and monitor for anomalous Python process execution originating from editor or build tooling contexts.