Lazarus and Other Actors Adapt Tactics to Evade Software Supply-Chain Defenses

· Original article ↗

Summary

In a podcast discussion, researchers describe Lazarus Group and other actors using version sandwiching, reused blockchain addresses, package clusters, dynamic imports and split payloads in software supply-chain attacks.

Key points

  • The speakers say Lazarus Group sometimes places a malicious package version between benign releases; scanning only the latest version may miss the malicious one.
  • They describe Lazarus reusing Aptos, Tron and Binance BSC addresses with mutable memo fields, which may help researchers connect campaigns.
  • Campaign-name strings embedded in payloads may help researchers link packages, endpoints and activity, though their meaning is uncertain.
  • The speakers report that lower-sophistication actors are also targeting multiple ecosystems, including npm and PyPI, and publishing clusters where only some packages carry payloads.
  • Dynamic imports can fetch dependencies from URLs at runtime, outside what package managers and some security controls can inspect, according to the discussion.
  • Payloads may be split among files or packages and assembled through imports or dependencies, complicating analysis and takedowns.

Article Details

Attack Vectors
  • According to Paul McCarty, attackers publish benign package versions before and after a malicious release, then pin another package's dependency to the malicious version to evade scanners that inspect only the latest release.
  • Attackers publish clusters of roughly two to ten packages, with only one or two carrying payloads and the others importing them. A previously benign package can take over payload delivery after another is removed.
  • McCarty reports that Lazarus Group reuses Aptos, Tron, and Binance BSC blockchain addresses and mutable memo components as infrastructure for locating updated payloads.
  • Attackers use VS Code tasks.json files to deliver platform-specific payloads and also compromise applications built on VS Code, including cursor and Windsurf.
  • Runtime JavaScript imports retrieve dependencies directly from URLs rather than declaring them in package manifests, bypassing package-manager-focused inspection.
  • Attackers split payload components across JavaScript or TypeScript files, and sometimes across multiple packages, assembling them through code imports or dependencies.
  • McCarty reports that lower-sophistication groups use vibe coding to port similar payloads across npm, PyPI, and other package ecosystems.
Defensive Notes
  • Inspect historical package versions, not just the latest release, and verify the exact versions selected by dependent packages.
  • Investigate related packages published close together, including apparently benign packages that import a malicious dependency.
  • Use reused blockchain addresses and their mutable memo contents as hunting pivots; the hosts also suggest considering blockchain-related activity for alerting.
  • Treat embedded tracking strings primarily as research pivots rather than standalone detection strings. Their internal meaning and relationship to individual operators remain uncertain.
  • Extend malicious-package monitoring beyond npm to other ecosystems used by the organization; security improvements in one registry do not automatically apply elsewhere.
  • Inspect source-level URL imports and the exact resources they retrieve. Distinguish malicious delivery domains from malicious resources hosted on otherwise legitimate CDNs.
  • Analyze connected files and transitive dependencies together to identify payloads whose components are distributed across multiple artifacts.

MITRE ATT&CK

People

Threat Actors

Products

Countries

Related Articles