Malicious code in mc-provider (npm)
The npm package mc-provider was a malicious typosquat impersonating the legitimate Cosmos chain-registry package. It silently redirected consumers to an unrelated third-party RPC provider (supersig) while presenting a fake README and decoy JSON files, potentially exposing wallet/dApp users to attacker-controlled signing and RPC traffic.
- Disclosed
- Last updated
- Blast radius
- Any npm consumer importing mc-provider expecting Cosmos chain registry functionality
- Ecosystems
- Attack vectors
- Affected entities
- mc-providernpm package impersonating hyperweb-io/chain-registry
The npm package mc-provider was published with a README copied verbatim from the legitimate hyperweb-io/chain-registry package, instructing users to import assets, chains, and ibc symbols. However, the actual package exports did not provide these symbols.
Instead, the package dynamically loaded an unrelated runtime dependency named supersig and re-exported its HttpProvider under the mc-provider name. Both the CommonJS (index.js) and ESM (esm/index.mjs) entry points performed this substitution. Bundled Cosmos chain and asset JSON files were included as decoys but were not accessible through the package's actual exports.
This attack pattern—impersonating a well-known registry package while silently injecting an attacker-controlled RPC/signing provider—is designed to compromise wallet and dApp dependency trees. Consumers following the README would unknowingly route their Cosmos JSON-RPC and signing traffic through code they never explicitly chose to install.
The incident was identified by the OpenSSF malicious-packages project and reported via GitHub Advisory GHSA-g2p9-4368-m8g2.
Indicators of compromise
- Packages
- mc-provider
Remediation
- Remove mc-provider from all npm dependencies immediately
- Audit package-lock.json and yarn.lock for any installations of mc-provider
- If mc-provider was installed, rotate any signing keys or credentials that may have been exposed to the supersig provider
- Use the legitimate hyperweb-io/chain-registry package instead
- Implement dependency scanning and verification tools to detect typosquats and impersonation attacks
Sources
- GitHub Advisory GHSA-g2p9-4368-m8g2 · GitHub Advisory Database
Cite this entry
"Malicious code in mc-provider (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-mc-provider-npm-1rmui8
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- resolvedcritical
Malicious code in create-coin (npm)
create-coin@20.1.1 on npm contained malicious postinstall code that collected sensitive environment variables, credentials, and host reconnaissance data. The package impersonated an esbuild platform build and exfiltrated data to a hardcoded endpoint.
npmCompromised packageTyposquatting - containedcritical
Malicious code in chai-as-testkit (npm)
The npm package chai-as-testkit is a typosquat/impersonation attack delivering obfuscated malicious code that executes on import. The package falsely claims to be a vulnerability management tool but ships pino library files under a different author, with a synthetic stub that loads a 4MB+ obfuscated bundle containing attacker-controlled code.
npmTyposquattingCompromised package - resolvedcritical
Malicious code in @next-fonts/font (npm)
@next-fonts/font is a typosquat package on npm that executes arbitrary attacker-controlled code via a blockchain-mediated C2 channel when its Inter() function is called. The malicious payload is base64-encoded and executed through Node.js spawn or eval, with no legitimate font functionality.
npmTyposquattingCompromised package - resolvedcritical
Malicious code in chai-as-soul (npm)
chai-as-soul@2.3.5 is a typosquat of the pino logging library containing malicious code that exfiltrates environment variables (including AWS/GCP/CI tokens) and executes arbitrary remote code on installation.
npmTyposquattingCompromised package