Open Source · · 2 days
Miasma poisoned LeoPlatform npm and jumped to a Go module
In late June 2026 the Miasma worm republished 23 LeoPlatform and RStreams npm packages with a malicious binding.gyp, then reached the Verana Blockchain Go module. It was the campaign's first move outside npm, though Socket notes the execution path is not Go-native.
Part of Miasma worm rode a build-config file through npm campaign
A late-June 2026 wave of the Miasma worm poisoned 23 npm packages belonging to the LeoPlatform and RStreams data-streaming projects, along with three packages published by the account llxlr. Socket, which analyzed the wave, also found compromise indicators in a Go module for the Verana Blockchain project. That made it the first time the campaign reached outside npm.
LeoPlatform and RStreams publish serverless data-streaming libraries for AWS. The malicious releases went out in a tight window, inserted as new patch versions across every supported major release series at once, so a project pinned to any maintained line would pick one up. The delivery reused the technique from the June 3 wave: a weaponized binding.gyp that runs during npm install when node-gyp evaluates it, rather than a lifecycle script that an install-time scanner would flag.
From there the chain ran through a ROT Caesar layer, AES-GCM decryption, and a downloaded Bun runtime used to execute the JavaScript payload outside Node's own security hooks. It collected npm tokens, GitHub secrets, SSH keys, and cloud credentials, and searched for GitHub Actions workflows with publishing permissions to extract more. The marker string RevokeAndItGoesKaboom tied the wave to earlier GitHub Actions compromises in the same family.
The persistence is what distinguishes this wave. Rather than relying on the package staying installed, the malware wrote hooks into developer tooling configuration for Claude, VS Code, Cursor, and Copilot, staging payloads in a .claude folder with a VS Code folder-open task that invokes node .claude/setup.mjs. A developer who merely opened a poisoned repository later would execute it, which extends the blast radius well past whoever ran the original install. Socket advised rotating exposed credentials from a clean machine and auditing repositories for injected workflows, unexpected branches, and .claude/ or .github/ configuration files. Researchers track the family under the overlapping names Mini Shai-Hulud, Miasma, and Hades.
Notes
- This wave is the Miasma campaign's first move outside npm. Socket cautions that normal Go module resolution and build logic do not appear to execute the payload, so this is not a Go-native compromise.
- Sources differ on timing. The Hacker News places the npm releases on 2026-06-24, while Socket describes all compromised versions being published within a 30-second window on 2026-06-26. Both dates are retained in the range.
- 23 packages across LeoPlatform and RStreams are affected, plus three hexo, prism and solo-nav packages published by the llxlr account. Socket enumerated the names and the single malicious version for each.
- Researchers use Mini Shai-Hulud, Miasma and Hades for overlapping parts of this family. The binding.gyp delivery matches the 2026-06-03 wave recorded at [[vapi-server-sdk]].
Appendix · Affected releases
- OSSF MAL-2026-6491 maps these checksums to the complete hexo-deployer-wrangler-1.0.4.tgz npm archive.
- OSSF MAL-2026-6492 maps these checksums to the complete hexo-shoka-swiper-0.1.10.tgz npm archive.
- OSSF MAL-2026-6417 maps these checksums to the complete leo-auth-4.0.6.tgz npm archive.
- OSSF MAL-2026-6419 maps these checksums to the complete leo-cache-1.0.2.tgz npm archive.
- OSSF MAL-2026-6420 maps these checksums to the complete leo-cdk-lib-0.0.2.tgz npm archive.
- OSSF MAL-2026-6422 maps these checksums to the complete leo-config-1.1.1.tgz npm archive.
- OSSF MAL-2026-6423 maps these checksums to the complete leo-connector-elasticsearch-2.0.6.tgz npm archive.
- OSSF MAL-2026-6424 maps these checksums to the complete leo-connector-mongo-3.0.8.tgz npm archive.
- OSSF MAL-2026-6425 maps these checksums to the complete leo-connector-mysql-3.0.3.tgz npm archive.
- OSSF MAL-2026-6426 maps these checksums to the complete leo-connector-oracle-2.0.1.tgz npm archive.
- OSSF MAL-2026-6427 maps these checksums to the complete leo-connector-redshift-3.0.6.tgz npm archive.
- OSSF MAL-2026-6428 maps these checksums to the complete leo-cron-2.0.2.tgz npm archive.
- OSSF MAL-2026-6429 maps the SHA-1 and SHA-512 to the complete leo-logger-1.0.8.tgz npm archive. Both match the StepSecurity-captured bytes; the SHA-256 was measured from that verified archive.
- OSSF MAL-2026-6431 maps these checksums to the complete leo-streams-2.0.1.tgz npm archive.
- OSSF MAL-2026-6493 maps these checksums to the complete prism-silq-1.0.1.tgz npm archive.
- OSSF MAL-2026-6432 maps these checksums to the complete rstreams-metrics-2.0.2.tgz npm archive.
- OSSF MAL-2026-6433 maps these checksums to the complete rstreams-shard-util-1.0.1.tgz npm archive.
- OSSF MAL-2026-6434 maps these checksums to the complete serverless-convention-2.0.4.tgz npm archive.
- OSSF MAL-2026-6435 maps these checksums to the complete serverless-leo-3.0.14.tgz npm archive.
- Socket staged payloads in a .claude folder with a VS Code folder-open task invoking node .claude/setup.mjs. The recorded SHA-256 is the module archive.
Indicators
- malware_familyMiasma
- filebinding.gyp
- file.claude/setup.mjs
- stringRevokeAndItGoesKaboom
- accountnpm: llxlr
References
- Miasma Mini Shai-Hulud Hits LeoPlatform npm Packages and Go Ecosystem - Socketsocket.dev
- Miasma Malware Targets npm Packages and GitHub Actions in Supply Chain Attack - The Hacker Newsthehackernews.com
- Mini Shai-Hulud Worm Poisons LeoPlatform npm Packages to Steal Developer and CI/CD Secrets - GBHackersgbhackers.com
- Shai-Hulud Miasma Supply Chain Attack On LeoPlatform - CyberSecureFoxcybersecurefox.com
- OSSF malicious-packages databasegithub.com
- Immutable StepSecurity workflow that captured leo-logger 1.0.8 with npm packgithub.com
- Successful StepSecurity leo-logger capture rungithub.com
- GitHub Actions metadata for the retained leo-logger-tarballs artifactapi.github.com
Source record: oss/attacks/leoplatform-rstreams/meta.yaml