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

verdaccio-tarball-local-storagenpm

verdaccio-tarball-local-storage is a confirmed malicious npm package (MAL-2026-11991) that steals credentials and exfiltrates sensitive data (malicious versions 38.1.1, 38.1.2, 38.1.3…). Do not install it — remove it immediately and rotate any exposed credentials.

Malicious code in verdaccio-tarball-local-storage (npm)

MAL-2026-11991
Immediate action
Remove the package, then rotate any secrets the build/runtime could reach.
npm uninstall verdaccio-tarball-local-storage

What this malware does

npm/verdaccio-tarball-local-storage is affected by the large-scale, self-propagating npm supply-chain worm of 2026-08-04 (the "Shai-Hulud: Here We Go Again" wave) — the same campaign that began with the compromise of the keyv and cacheable maintainer account. The listed version(s) were trojanized and republished by the worm after it reached an npm publish token belonging to a maintainer in this namespace; the payload enumerates every package a stolen token controls and republishes each with the same hook, so many packages under this scope were poisoned in the same short window. Every poisoned release adds a preinstall hook ("preinstall": "node setup.mjs") that runs on a bare npm install, before any project code. setup.mjs downloads a standalone Bun runtime and runs a byte-identical, heavily obfuscated ~728 KB second-stage credential stealer (shipped as Math_Symbol.js / math_init.js). It harvests GitHub, npm, AWS, GCP, Azure, HashiCorp Vault and Kubernetes credentials plus generic secrets and private keys (TruffleHog-style sweep), reads CI/CD secrets and identifies build runners, then republishes further packages the stolen token can reach. Rather than a fixed command-and-control host, it exfiltrates stolen findings to attacker-created GitHub repositories (descriptions reading "Shai-Hulud: Here We Go Again") and over DNS. Treat any environment that installed an affected version (with install scripts enabled) as compromised: rotate and revoke all reachable credentials (npm and GitHub tokens, cloud keys, Vault/Kubernetes secrets, and CI org/repo secrets). Part of the August 2026 npm worm that poisoned 400+ packages across many organizations.

The npm package's preinstall hook runs node setup.mjs, which prefers a system bun binary and otherwise downloads a Bun runtime archive from a GitHub releases URL constructed at runtime, unpacks it to a temp directory, chmods the extracted binary 0o755, and invokes it against the sibling file math_init.js via execFileSync. math_init.js is a 727 KB single-line, heavily obfuscated JavaScript blob (character-array rotator plus a large custom Base64-style alphabet constant, matching the obfuscator.io shape) that is never referenced by the plugin's advertised entry (dist/index.js) and is only reachable through the freshly downloaded Bun runtime. The package name verdaccio-tarball-local-storage closely resembles the legitimate @verdaccio/local-storage, and the benign-looking dist/index.js presents a plausible Verdaccio-plugin cover while the actual install-time behavior is an alternate-runtime dropper that executes an opaque bundled payload on npm install. This is the alternate-runtime-dropper fingerprint: a second language runtime is fetched at install specifically to execute a bundled obfuscated blob outside the Node-based execution path that most scanners inspect.

Any computer that has this package installed or running should be considered fully compromised. All secrets and keys stored on that computer should be rotated immediately from a different computer. The package should be removed, but as full control of the computer may have been given to an outside entity, there is no guarantee that removing the package will remove all malicious software resulting from installing it.

Malicious versions

16 flagged
38.1.138.1.238.1.338.1.438.1.538.1.638.1.738.1.838.1.938.1.1038.1.1138.1.1238.1.1338.1.1438.1.1538.1.16

Indicators of compromise (SHA-256)

e3ffee2f7d4a7182f817d99bbe9ee515a5a0aa25fc26e1262bf3cf47840840fd
407a94cdb822a5ff4ffcc43562d1d7bb32598eb04f5e8fd25d85f3c9aea4e941
4424998ccb19d313d8b44503f9dc5a741a20da2dfa4429605e0c29c63ee0265c
7966451fd9fa3053835e16a2034691e7baefaa27bde6b9bb2e98c2b5cac0f50d
8dc9e0f6b645048d62c5a992c3fb27f9f4a4115d5402de4946d29c87fa88e891
c7bb94ec89bd120b33b2d6358bdbd1048ede31bed80d1a00ea5cd2ef28e9c4c4
d42150f1af7c76a53b3bfdb6e2b13f02437eae12b2b6bacd2c0a1f1cb9c07a66
180275a7304479485865cfd716009c2408b31ce9eef8a218590c3de7ef618bdb
2c59d86094e7a68db9cdf320330f8b99f3db90057674973a5aada1779101e6e3
73f069813fe18ac7d2f09e5f551bc57c88fa5eba32713587db1bd58539faaa33
b77cb68288abdb404b5c2ee705bb9b6e2044ffbb2fbcbe1ed24370542857a143
ebf540aad335a210e8e570473d644ad623d7f446a25784958cc9b6ebeaf2330f
f4bbafc3ec3aeab4102a81ce0554b735bb9aabef6f719e7b273ea29b7466824b
ffd26c8b43b39bec4d74047ebaf67886940bcfd1b1b9834b85426e0394b1822a

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 verdaccio-tarball-local-storage (16 malicious versions). O3 Security's supply-chain scanner checks every dependency against known-malicious package intelligence at install time and in CI, flagging verdaccio-tarball-local-storage across your stack and pipelines.

  2. If you installed it — respond

    verdaccio-tarball-local-storage 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 verdaccio-tarball-local-storage 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 verdaccio-tarball-local-storage 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. verdaccio-tarball-local-storage on npm has been identified as a malicious package (versions 38.1.1, 38.1.2, 38.1.3, 38.1.4, 38.1.5, 38.1.6, 38.1.7, 38.1.8, and 8 more flagged). It should be removed immediately — do not install or keep it in your dependency tree.

Campaign

GHSA-9gjj-ggwr-8h6xIN-MAL-2026-013466IN-MAL-2026-013509IN-MAL-2026-013500IN-MAL-2026-013522IN-MAL-2026-013561IN-MAL-2026-013587IN-MAL-2026-013548IN-MAL-2026-013518IN-MAL-2026-013663IN-MAL-2026-013557IN-MAL-2026-013671IN-MAL-2026-013657IN-MAL-2026-013626

References

Credits

  • Aikido Security · finder
  • Amazon Inspector · finder
  • SafeDep · finder
  • Socket Threat Research Team · finder

Detect & block this

O3 blocks verdaccio-tarball-local-storage-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

verdaccio-tarball-local-storage (npm) malicious package — MAL-2026-11991 | O3 Security