惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Secure Thoughts
Recent Commits to openclaw:main
Recent Commits to openclaw:main
H
Heimdal Security Blog
SecWiki News
SecWiki News
H
Hacker News: Front Page
N
News | PayPal Newsroom
L
LINUX DO - 最新话题
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
AI
AI
C
Cybersecurity and Infrastructure Security Agency CISA
Scott Helme
Scott Helme
PCI Perspectives
PCI Perspectives
S
Securelist
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
Cyberwarzone
Cyberwarzone
A
Arctic Wolf
Forbes - Security
Forbes - Security
T
Tor Project blog
Spread Privacy
Spread Privacy
WordPress大学
WordPress大学
I
Intezer
Martin Fowler
Martin Fowler
Help Net Security
Help Net Security
P
Proofpoint News Feed
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Cisco Talos Blog
Cisco Talos Blog
Latest news
Latest news
博客园 - 司徒正美
W
WeLiveSecurity
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
V
V2EX
P
Palo Alto Networks Blog
Google DeepMind News
Google DeepMind News
IT之家
IT之家
阮一峰的网络日志
阮一峰的网络日志
V
Vulnerabilities – Threatpost
Jina AI
Jina AI
S
Security Affairs
Hacker News - Newest:
Hacker News - Newest: "LLM"
Simon Willison's Weblog
Simon Willison's Weblog
Project Zero
Project Zero
T
Threatpost
P
Privacy International News Feed
人人都是产品经理
人人都是产品经理
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
Application and Cybersecurity Blog
Application and Cybersecurity Blog
博客园 - Franky
Hugging Face - Blog
Hugging Face - Blog
Apple Machine Learning Research
Apple Machine Learning Research

Step Security Blog

Securing Vibe Coding and AI Coding Agents: An End-to-End Approach with StepSecurity - StepSecurity Introducing StepSecurity Dev Machine Guard: Protecting Developer Machines from Supply Chain Attacks - StepSecurity Top 2024 Predictions for CI/CD Security - StepSecurity Dev Machine Guard Is Now Open Source: See What's Really Running on Your Developer Machine - StepSecurity Datadog's DevSecOps 2026 Report Validates What We've Been Building - StepSecurity hackerbot-claw: An AI-Powered Bot Actively Exploiting GitHub Actions - Microsoft, DataDog, and CNCF Projects Hit So Far - StepSecurity Cline Supply Chain Attack Detected: cline@2.3.0 Silently Installs OpenClaw - StepSecurity StepSecurity’s Unified Protection Across the SDLC Infrastructure Threat Framework (SITF) - StepSecurity @velora-dex/sdk Compromised on npm: Malicious Version Drops macOS Backdoor via launchctl Persistence - StepSecurity axios Compromised on npm - Malicious Versions Drop Remote Access Trojan - StepSecurity Behind the Scenes: How StepSecurity Detected and Helped Remediate the Largest npm Supply Chain Attack - StepSecurity 10 Layers Deep: How StepSecurity Stops TeamPCP's Trivy Supply Chain Attack on GitHub Actions - StepSecurity Malicious IoliteLabs VSCode Extensions Target Solidity Developers on Windows, macOS, and Linux with Backdoor - StepSecurity TeamPCP Plants WAV Steganography Credential Stealer in telnyx PyPI Package - StepSecurity litellm: Credential Stealer Hidden in PyPI Wheel - StepSecurity Checkmarx KICS GitHub Action Compromised: Malware Injected in All Git Tags - StepSecurity CanisterWorm: How a Self-Propagating npm Worm Is Spreading Backdoors Across the Ecosystem - StepSecurity Trivy Compromised a Second Time - Malicious v0.69.4 Release, aquasecurity/setup-trivy, aquasecurity/trivy-action GitHub Actions Compromised - StepSecurity bittensor-wallet 4.0.2 Compromised on PyPI - Backdoor Exfiltrates Private Keys - StepSecurity Malicious npm Releases Found in Popular React Native Packages - 130K+ Monthly Downloads Compromised - StepSecurity Malicious Polymarket Bot Hides in Hijacked dev-protocol GitHub Org and Steals Wallet Keys - StepSecurity ForceMemo: Hundreds of GitHub Python Repos Compromised via Account Takeover and Force-Push - StepSecurity xygeni-action Compromised: C2 Reverse Shell Backdoor Injected via Tag Poisoning - StepSecurity kubernetes-el Compromised: How a Pwn Request Exploited a Popular Emacs Package - StepSecurity How StepSecurity Caught a Release Storm in Microsoft’s @types Packages - StepSecurity Harden Runner Now Supports Windows and macOS GitHub Actions Runners - StepSecurity 10,000 Open-Source Projects Now Secured by Harden-Runner Community-Tier: A Milestone Three Years in the Making - StepSecurity 20+ Popular NPM Packages Compromised (Chalk, Debug, Strip-ANSI, Color-Convert, Wrap-ANSI...) - StepSecurity 2024 in Review: The Evolution of CI/CD Security & What's Next - StepSecurity How to Use Docker in Actions Runner Controller (ARC) Runners Securely - StepSecurity Celebrating 1000 Repositories Secured with Harden Runner: A Journey of Growth and Collaboration - StepSecurity StepSecurity Detects Early Supply Chain Risk Signals in kilocode npm - StepSecurity Another npm Supply Chain Attack: The 'is' Package Compromise - StepSecurity anthropics/claude-code-action Security: How to Secure Claude Code in GitHub Actions with Harden-Runner - StepSecurity Harden-Runner detection: tj-actions/changed-files action is compromised - StepSecurity StepSecurity's Catalog of Fixes - StepSecurity Orchestrating Security: StepSecurity's Impact on 400+ Repositories and Future Plans - StepSecurity Announcing Anomalous Outbound Call Detection Using Machine Learning - StepSecurity Announcing GitHub Actions Advisor and StepSecurity Maintained Actions - StepSecurity Analysis of Backdoored XZ Utils Build Process with Harden-Runner - StepSecurity Announcing General Availability of Harden Runner - StepSecurity Milestone Achieved: 2500+ Public Repositories Secured with Harden-Runner - StepSecurity Build secretless CI/CD pipelines using wait-for-secrets - StepSecurity Introducing Apps & PATs: Centralized Visibility for GitHub Apps and Personal Access Tokens - StepSecurity CVE-2026-22709: Critical Sandbox Escape Vulnerability in vm2 - StepSecurity StepSecurity Now Supports Dark Mode - StepSecurity 2025 in Review: The Evolution of Supply Chain Security & What's Next - StepSecurity Bake Harden-Runner Into GitHub's Custom Runner Images for Organization-Wide CI/CD Security - StepSecurity StepSecurity Is Now Available on Azure Marketplace - StepSecurity Critical Remote Code Execution Vulnerabilities Discovered in React Server Components and Next.js - StepSecurity How Harden Runner Detected the Sha1-Hulud Supply Chain Attack in CNCF's Backstage Repository - StepSecurity Sha1-Hulud: The Second Coming - Zapier, ENS Domains, and Other Prominent NPM Packages Compromised - StepSecurity Supply Chain Security Alert: eslint-config-prettier Package Shows Signs of Compromise - StepSecurity 9,000 Open-Source Projects Now Secured by Harden-Runner - StepSecurity Shai-Hulud: Self-Replicating Worm Compromises 500+ NPM Packages - StepSecurity Introducing npm Package Search: Find Where Any Package Was Introduced Across Your GitHub Organizations - StepSecurity StepSecurity Is Sponsoring GitHub Universe 2025 - StepSecurity s1ngularity: Popular Nx Build System Package Compromised with Data-Stealing Malware - StepSecurity Introducing StepSecurity Threat Intelligence: Real-Time Supply Chain Attack Alerts for Your SIEM - StepSecurity 8,000 Strong: Harden-Runner's Growing Impact on CI/CD Security - StepSecurity Securing Google Gemini in GitHub Actions with Harden-Runner - StepSecurity GhostAction Campaign: Over 3,000 Secrets Stolen Through Malicious GitHub Workflows - StepSecurity Introducing the NPM Package Cooldown Check - StepSecurity Securing GitHub Copilot in GitHub Actions with Harden-Runner - StepSecurity Calculate Your CI/CD Security ROI with StepSecurity's New ROI Calculator - StepSecurity How StepSecurity Harden Runner Detected Unexpected Microsoft Defender Installation on GitHub-hosted Ubuntu Runners - StepSecurity StepSecurity Harden Runner: Detect source code tampering during the build process - StepSecurity Suspicious Tag Movement in AWS’s GitHub Action: What Happened and Why It Matters - StepSecurity When 'Changed Files' Changed Everything: Our Black Hat 2025 Presentation on the tj-actions Supply Chain Breach - StepSecurity Lessons from AWS CodeBuild’s Memory-Dump Incident (CVE-2025-8217) - StepSecurity Supply Chain Security Alert: num2words PyPI Package Shows Signs of Compromise - StepSecurity When AI Meets CI/CD: Coding Agents in GitHub Actions Pose Hidden Security Risks - StepSecurity The GitHub Warning Everyone Ignores: 'This Commit Does Not Belong to Any Branch' - StepSecurity 8 GitHub Actions Secrets Management Best Practices to Follow - StepSecurity reviewdog GitHub Actions are compromised - StepSecurity 7,000 Open-Source Projects Now Secured by Harden-Runner - StepSecurity Replace Third-Party Actions with StepSecurity Maintained Actions via Automated Pull Requests - StepSecurity StepSecurity Is Now Available on AWS Marketplace - StepSecurity Introducing StepSecurity Artifact Monitor: Detect Unauthorized Software Releases in minutes, not months - StepSecurity Introducing Workflow Run Policies: Guardrails for Blocking Non-Compliant GitHub Actions Runs - StepSecurity Harden-Runner Detects New Traffic to release-assets.githubusercontent.com Across Multiple Customers - StepSecurity Grafana GitHub Actions Security Incident - StepSecurity Export Harden-Runner Security Insights and Detections to Amazon S3 - StepSecurity Evolving Harden-Runner’s disable-sudo Policy for Improved Runner Security - StepSecurity Announcing Policy-Driven Automated Pull Requests for CI/CD Misconfiguration Remediation - StepSecurity Announcing StepSecurity’s Integration with RunsOn: Secure and Optimized CI/CD Pipelines - StepSecurity Secure Repo Just Got Better: New Features for GitHub Actions Security Best Practices - StepSecurity Why Compliance Auditors Are Looking at Your CI/CD Runners - And How to Prepare - StepSecurity Harden-Runner Flags Anomalous Outbound Call, Leading to Docker Documentation Update - StepSecurity StepSecurity Harden-Runner Now Secures GitHub Actions Workflows for Over 5,000 Open Source Projects - StepSecurity GitHub Actions Pwn Request Vulnerability - StepSecurity Prevent Ultralytics Style CI/CD Security Attacks with Network Security Controls - StepSecurity PyTorch Supply Chain Compromise - StepSecurity Unified Network Egress View: Centralize GitHub Actions Network Destinations for Your Enterprise - StepSecurity Uniting Developers and Security: Celebrating the Success of 500+ Open Source Projects Using StepSecurity's Orchestration Platform - StepSecurity 5 Effective Third-Party GitHub Actions Governance Best Practices - StepSecurity StepSecurity Recognized Among CRN’s "10 Hottest DevOps Startups Of 2024" - StepSecurity Streamline Your GitHub Actions Workflows with StepSecurity’s Latest Feature - StepSecurity StepSecurity Steps Up the Security Game with SOC 2 Type 2 Compliance - StepSecurity StepSecurity's Alignment with CISA's CI/CD Security Guidance - StepSecurity
Mass npm Supply Chain Attack: 20 Leo Platform Packages Compromised - StepSecurity
2026-06-25 · via Step Security Blog

Summary

On June 24, 2026, an attacker published malicious versions of 20 npm packages belonging to the Leo Platform ecosystem in a coordinated burst spanning less than three seconds. All 20 packages carry an identical CI/CD attack toolkit that steals secrets from GitHub Actions runners, cloud credential stores, package registries, and password managers, then exfiltrates them via the victim's own GitHub token. Together these packages receive approximately 13,600 downloads per week.

We analyzed leo-logger@1.0.8 in full and spot-checked leo-sdk@6.0.19 to confirm the campaign scope. The attack uses the same toolkit and delivery mechanism we documented in our earlier post on the Miasma campaign: a "Phantom Gyp" binding.gyp install hook, a three-layer obfuscation chain (ROT-N cipher, AES-128-GCM, obfuscator.io), and Bun runtime evasion. For a full technical breakdown of the attack chain, see that post. This report focuses on the Leo Platform campaign specifics: the 20 affected packages, the coordinated publish, and remediation steps.

All 20 packages were published within a 3-second window at 2026-06-24T23:04:55Z, confirming a single automated operation against the Leo Platform maintainer accounts. The payload is structurally identical to the Miasma campaign published June 3, 2026, sharing the same binding.gyp hook syntax, the same three-layer obfuscation chain, and the same Bun v1.3.13 download URL. This seems to be the same threat actor targeting a new ecosystem, 21 days after Miasma.

Affected Packages

The following 20 packages are confirmed malicious at the listed versions. All were published simultaneously by an unauthorized actor who gained access to the Leo Platform maintainer credentials.

Package Malicious Version
leo-logger 1.0.8
leo-sdk 6.0.19
leo-aws 2.0.4
leo-config 1.1.1
leo-streams 2.0.1
serverless-leo 3.0.14
leo-connector-mongo 3.0.8
serverless-convention 2.0.4
rstreams-metrics 2.0.2
leo-connector-elasticsearch 2.0.6
leo-auth 4.0.6
leo-cache 1.0.2
leo-cli 3.0.3
leo-cron 2.0.2
leo-connector-redshift 3.0.6
leo-connector-oracle 2.0.1
rstreams-shard-util 1.0.1
leo-connector-mysql 3.0.3
leo-cdk-lib 0.0.2
solo-nav 1.0.1

Connection to the Miasma Campaign

On June 3, 2026 we published a detailed technical analysis of the Miasma campaign, which compromised 57 npm packages across 286+ versions using the same toolkit. The Leo Platform attack is structurally identical:

Technique Miasma (June 3) Leo Platform (June 24)
Install hook binding.gyp "Phantom Gyp" with <!(node index.js > /dev/null 2>&1 && echo stub.c)> Byte-for-byte identical
Obfuscation chain ROT-N + AES-128-GCM + obfuscator.io (3 layers) Same 3 layers
Bun version v1.3.13 from GitHub Releases Identical
Bun downloader blob 907 bytes Identical
Runner.Worker /proc/{pid}/mem Yes Yes
GitHub dead-drop exfil Yes Yes
npm supply chain worm Yes, via bypass_2fa Yes, via bypass_2fa
Scale 57 packages, 286+ versions, under 2 hours 20 packages, 3-second burst

The Leo Platform operation is more targeted and quieter than Miasma. It focuses on a single maintained ecosystem rather than carpet-bombing across maintainer accounts, and the publish window (3 seconds vs. under 2 hours) suggests the same automated payload factory operating with improved tooling. The binding.gyp hook syntax, the Bun download URL, and the three-layer obfuscation structure are fingerprints that tie both operations to the same actor.

The "Phantom Gyp" technique uses the node-gyp <!(...)> shell expansion inside the sources array to execute arbitrary commands at install time without declaring any entry in the scripts block of package.json. Any package that ships a binding.gyp file but has no C++ sources and no .node binary output should be treated as suspicious. For a full technical walkthrough of the obfuscation chain and payload capabilities, see our Miasma analysis.

What the Payload Does

The payload capabilities are documented in detail in the Miasma post. In summary, the toolkit does the following on every install:

  • Runner process memory extraction: Locates the GitHub Actions Runner.Worker process via /proc/{pid}/cmdline, then reads /proc/{pid}/mem directly to recover secrets that are masked in workflow logs and invisible to child processes.
  • Multi-cloud credential sweep: AWS (IMDS, Secrets Manager, SSM, ECS), GCP (metadata service, service account keys), Azure (managed identity, Key Vault, federated credentials), HashiCorp Vault (10+ token file locations), Kubernetes (service account token), npm, PyPI, RubyGems, JFrog, GitHub PATs, and 1Password.
  • GitHub dead-drop exfiltration: Stolen credentials are encrypted and committed to GitHub repositories via the GitHub GraphQL API using the victim's own token. No external attacker-controlled domain is contacted.
  • Supply chain worm: If an npm token is found, the payload publishes malicious versions of any package the victim has publish rights to via the bypass_2fa API mechanism, without triggering two-factor authentication.
  • Workflow injection: GitHub Actions workflow files are modified to request id-token: write permission and add steps referencing attacker-controlled pinned action SHAs.
  • Privilege escalation: On GitHub-hosted runners, the payload writes runner ALL=(ALL) NOPASSWD:ALL to grant passwordless sudo access.

Indicators of Compromise

Type Value Significance
Publish timestamp 2026-06-24T23:04:55Z (all 20 packages within 3 seconds) Any Leo Platform package published in this window is compromised
Structural fingerprint Char-code array of length 1,566,023 in index.js Unique to this payload factory; identifies any package from this campaign
binding.gyp hook <!(node index.js > /dev/null 2>&1 && echo stub.c)> Phantom Gyp install-time execution; identical to Miasma campaign
Bun download github.com/oven-sh/bun/releases/download/bun-v1.3.13/ Outbound connection during npm install; strong behavioral signal
Temp file execution /tmp/p*.js executed by bun Payload drop location; definitive behavioral indicator
Memory access /proc/{pid}/mem where target is Runner.Worker Runner secret extraction; definitively malicious in any CI/CD context
Worm capability bypass_2fa npm 2FA bypass for supply chain propagation
Privilege escalation runner ALL=(ALL) NOPASSWD:ALL Sudo escalation on GitHub-hosted runners
AES key (leo-logger Blob 1) ad9f0ecdbf6075f8cc4ca8bdd62bd27c Per-package unique; fingerprints leo-logger@1.0.8 specifically
AES key (leo-logger Blob 2) 54089e0f368fa9a7e2050de9b0db121a Per-package unique; fingerprints leo-logger@1.0.8 specifically
SHA1 (leo-logger@1.0.8) 24a0d9e496ec07ca978fab602d5f5e0b39fa03a0
SHA1 (leo-sdk@6.0.19) d45ad3cffbcc7c4b354ebe9d71d002fa585379ec
SHA1 (leo-aws@2.0.4) 1dcc0a39e1cd7293a9058cfc41e1afe8b397c943
SHA1 (leo-config@1.1.1) ed9a17d6567101fa4f9f552a4a52cfcca88fa662
SHA1 (leo-streams@2.0.1) effa8576594fdd59907b5c5c07293ce28a9a3393
SHA1 (serverless-leo@3.0.14) 47d73156df1c767bb168c4309fd17b92324d587d
SHA1 (serverless-convention@2.0.4) 5e75c14b8acd5752819ab7a10874ddd6389f5238
SHA1 (leo-auth@4.0.6) 809ce3680adfdb8f0746189b68b6b5a6888a960f
SHA1 (leo-connector-mongo@3.0.8) 68a1cd589b2ce322f5f03fe7f85dc3f176a759d4
SHA1 (leo-connector-elasticsearch@2.0.6) be3b1f7f1b50f5d53b164a72fb3a9845f4734325
SHA1 (leo-connector-mysql@3.0.3) f03a3e0dca9ef402352ce61cad59e5d850744960
SHA1 (leo-connector-redshift@3.0.6) 888094a9b842cfe98e8e24c8f729be1fb6384563
SHA1 (leo-connector-oracle@2.0.1) d7224b6b1f5d2f9403f1cebc8f82518c20b4d0f7
SHA1 (leo-cache@1.0.2) e973173fb757d2dab9c6424b440dd9f7cbe4f14a
SHA1 (leo-cli@3.0.3) 92221eb202e9f2ac577e5c33658c8a05c6d67556
SHA1 (leo-cron@2.0.2) be6bb1cf88c46e9e4a6f1a68ed001b77769d58de
SHA1 (rstreams-metrics@2.0.2) 1a5a1445fcd73133f22a0e7895993ac0a42b56da
SHA1 (rstreams-shard-util@1.0.1) a8cb86b78ca56befe90dc466642cb04b98079909
SHA1 (leo-cdk-lib@0.0.2) ef8bf6dd92cbc29ef8d23f3f0fa786ed20a856b1
SHA1 (solo-nav@1.0.1) 9be49287057cd6a54ef4a70a8d541a7259efbd2d

For StepSecurity Customers

Threat Center Alert

StepSecurity has published a threat intel alert in the Threat Center with all relevant links to check if your organization is affected. The alert includes the full attack summary, technical analysis of the Phantom Gyp technique, IOCs, all affected packages and malicious versions, and remediation steps, so teams have everything needed to triage and respond immediately. Threat Center alerts are delivered directly into existing SIEM workflows for real-time visibility.

Harden-Runner

Harden-Runner is a purpose-built security agent for CI/CD runners. It monitors all network events, process executions, file access, and outbound network connections at the step level in GitHub Actions, providing full runtime visibility into what happens during every workflow step, including npm install.

Harden-Runner detects the anomalous process chain (node-gyp spawning curl, unzip, and bun) and the unauthorized memory read, immediately initiating lockdown mode. The workflow run is terminated, preventing any secrets from being extracted.

Link to the run : https://app.stepsecurity.io/github/actions-security-demo/test-comp/actions/runs/28155317636

Secure Registry

StepSecurity Secure Registry provides each enterprise customer with a dedicated, policy-enforced npm registry that sits between your existing package manager (such as JFrog Artifactory) and the public npm registry. Instead of fetching packages directly from registry.npmjs.org, your infrastructure routes requests through your StepSecurity registry, which applies configurable security policies before serving any package.

The primary defense here is the cooldown period. Newly published package versions are held for a configurable window before being served to any developer machine or CI/CD pipeline. When the compromised Miasma packages were published to npm, including @vapi-ai/server-sdk, ai-sdk-ollama, and dozens of packages in the jagreehal ecosystem, Secure Registry customers were never exposed.

Detect Compromised Developer Machines

StepSecurity Dev Machine Guard gives security teams real-time visibility into npm packages installed across every enrolled developer device. When a malicious package is identified, teams can immediately search by package name and version to discover all impacted machines.

npm Package Cooldown Check

Newly published npm packages are temporarily blocked during a configurable cooldown window. When a PR introduces or updates to a recently published version, the check automatically fails. Since most malicious packages are identified within hours, this creates a crucial safety buffer. In this case, 57 packages across 286+ malicious versions were published in a rolling campaign lasting under two hours on June 3, so any PR updating to an affected version during the cooldown period would have been blocked automatically.

npm Package Compromised Updates Check

StepSecurity maintains a real-time database of known malicious and high-risk npm packages, updated continuously, often before official CVEs are filed. If a PR attempts to introduce a compromised package, the check fails and the merge is blocked. All compromised versions from this Miasma campaign, including @vapi-ai/server-sdk, ai-sdk-ollama, and the full jagreehal package family, were added to this database within minutes of detection.

npm Package Search

Search across all PRs in all repositories across your organization to find where a specific package was introduced. When a compromised package is discovered, instantly understand the blast radius: which repos, which PRs, and which teams are affected. This works across pull requests, default branches, and dev machines.