The leo-aws npm package was compromised as part of the Miasma worm campaign targeting the LeoPlatform npm ecosystem. On June 24, 2026, 20 LeoPlatform packages were published within a 3-second window by a threat actor who had taken over the npm account czirker belonging to the LeoPlatform organization.
The malicious payload is triggered automatically during npm install via a binding.gyp file using node-gyp command expansion (<!(node index.js > /dev/null 2>&1 && echo stub.c)), which bypasses lifecycle script scanners. The replaced index.js (~5.2 MB, obfuscated with ROT-N + AES-128-GCM encryption) deploys a multi-stage worm with the following capabilities:
snapshot-<hex> branches with fake "Dependabot Updates" workflows to maintain access after initial compromise.Any system that installed this version should be considered fully compromised. Rotate all secrets immediately from a separate, clean machine. See the linked SafeDep report for full payload analysis, indicators of compromise, and remediation guidance.
-= Per source details. Do not edit below this line.=-
The package contains a binding.gyp at the tarball root whose contents use GYP command-expansion syntax (node-gyp rebuild whenever a binding.gyp is present in the package, even without any declared install/postinstall script, and node-gyp's configure step evaluates npm install of leo-aws. The package ships no native C/C++ source files (no.c/.cc/.cpp/.h), so the binding.gyp has no legitimate build purpose — its only effect is to run the embedded shell command at install time. This is functionally equivalent to a postinstall hook and is a well-known supply-chain attack technique for hiding install-time code execution from cursory script-field inspection.
{
"iocs": {
"urls": [
"https://safedep.io/miasma-worm-hits-leoplatform-20-npm-packages/"
]
},
"malicious-packages-origins": [
{
"versions": [
"2.0.4"
],
"modified_time": "2026-06-25T06:30:31Z",
"sha256": "914680f83c4971cb6bc16c3ef608f4c1e8a73a25769911d5d9076ad91c935f63",
"id": "IN-MAL-2026-007471",
"source": "amazon-inspector",
"import_time": "2026-06-25T07:47:50.768854299Z"
}
]
}[
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
},
{
"cweId": "CWE-506",
"description": "The product contains code that appears to be malicious in nature.",
"name": "Embedded Malicious Code"
}
]
{
"package_integrity": [
{
"hashes": {
"sha512_sri": "sha512-Luw+cZtqqoRjRmSvjgcPYG/xQianu4NoE10qB4TwlJVcUoKjdl5bQa51hzAAUvitdncPT/mg4K+xBpGmlmeCeQ==",
"sha1": "1dcc0a39e1cd7293a9058cfc41e1afe8b397c943"
},
"filename": "leo-aws-2.0.4.tgz"
}
],
"evidence_files": [
{
"path": "binding.gyp",
"tlsh": "48c08c3ca9380d1029d958285168d402a4b142a3494e2a81fade60284fa840b2898bad",
"sha256": "32d1bc728d8e504952083a6adc488c309a401c7df4dc8f47b382ce32e4aebe21"
}
]
}
"https://github.com/ossf/malicious-packages/blob/main/osv/malicious/npm/leo-aws/MAL-2026-6418.json"