Your RSA-2048 keys break in 2030. Find every one of them before attackers do.
Malicious package

@aerodrome-finance/contractsnpm

@aerodrome-finance/contracts is a confirmed malicious npm package (MAL-2026-13734) that steals credentials and exfiltrates sensitive data (malicious versions 1.0.0, 1.1.0, 1.1.1). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in @aerodrome-finance/contracts (npm)

MAL-2026-13734
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall @aerodrome-finance/contracts

What this malware does

Package name typosquats the legitimate @aerodrome-finance scope. Lifecycle hooks auto-execute index.js on npm install, which reads installer secrets from ~/.aws/, ~/.ssh/, ~/.kube/, ~/.docker/, ~/.netrc, ~/.npmrc, ~/.pypirc, ~/.git-credentials, gcloud/solana/anchor/sui key directories, Foundry keystores, and.env files, and scrapes process.env for keys matching KEY|TOKEN|SECRET|PASS|PRIVATE|MNEMONIC|AWS|GITHUB|NPM|WALLET|SEED. The collected data is POSTed to a hardcoded webhook.site endpoint via https.request from a detached child process (spawn(process.execPath, ['-e', src], {detached:true, stdio:'ignore'})) that sleeps 60-240 seconds before sending, to outlive install and scan windows. Sandbox/honeypot evasion is present: host regex checks for scan-/detonation/sandbox/ubuntu-fc-uvm prefixes, non-root/sandbox user checks, canarytoken/honey env checks, and a check for npm mirror registries. Static evidence confirms co-use of child_process, https, os, and fs, with os.hostname() and a POST to https.request in index.js.

Malicious versions

3 flagged
1.0.01.1.01.1.1

Indicators of compromise (SHA-256)

2b6da350e06187c00753bd78bda67b05689711e8d11afaaf9afbe49355c852b2
2c46806c21e6a0f5a5593eca11bbd822991f566dc05eb50c7ec56f88b649c3be
b5f4b09e2a883fc7d965e765a06d73db3df32936b8262c4722eac93a6455c1f7

Detection & response playbook

Credential / info stealer
  1. Find it

    Scan your lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements.txt, poetry.lock, etc.) and build artifacts for @aerodrome-finance/contracts (3 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging @aerodrome-finance/contracts across your stack and pipelines.

  2. If you installed it — respond

    @aerodrome-finance/contracts is built to steal secrets, so assume every credential the build or runtime could read is compromised. Remove it from your project and lockfile, then rotate ALL exposed secrets — npm/registry tokens, cloud keys, CI/CD secrets, SSH keys, and any .env values — from a known-clean machine. Audit logs for unauthorized use of those credentials.

  3. Did it already run?

    If @aerodrome-finance/contracts was ever installed, its post-install/runtime payload may have already executed. O3's L7 egress monitoring and runtime eBPF sensors detect the credential exfiltration or command-and-control callback after install and block the malicious outbound channel, so you catch and contain the actual compromise — not just the presence of the package.

  4. How O3 protects you

    O3 blocks @aerodrome-finance/contracts before install through its supply-chain scanner, and if it has already run, detects and severs the exfiltration or C2 callback at runtime through L7 egress monitoring and eBPF.

Frequently asked questions

No. @aerodrome-finance/contracts on npm has been identified as a malicious package (versions 1.0.0, 1.1.0, 1.1.1 flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

IN-MAL-2026-017365IN-MAL-2026-017367IN-MAL-2026-017366

References

Credits

  • Amazon Inspector · finder

Detect & block this

O3 blocks @aerodrome-finance/contracts-class packages before install and in CI — and if it already ran, its runtime egress monitoring catches the credential exfiltration and severs the channel.

Explore