Malicious code in arb-kit (npm)
The arb-kit npm package contained malicious code that harvests cryptocurrency wallet credentials and private keys from the host system and exfiltrates them via IPFS. The payload establishes persistence across system reboots and targets wallet files from Metamask, Phantom, Ledger, Trezor, Solana, Ethereum, and Bitcoin.
- Disclosed
- Last updated
- Blast radius
- Any developer or application using arb-kit npm package; systems running affected code could have wallet credentials and private keys exfiltrated.
- Ecosystems
- Attack vectors
- Affected entities
- arb-kitnpm package advertised as Arbitrum ABI/gas toolkit
The arb-kit npm package, marketed as an Arbitrum ABI/gas toolkit, contained intentionally obfuscated malicious code in its main entry point (index.js). An IIFE (immediately invoked function expression) executes 37 seconds after the package is required, reading a base64-encoded payload from test/fixtures/keypairs.dat and writing decoded JavaScript to ~/.cache-db/.node-sync/syncd.js.
The dropped payload establishes persistence by installing OS-appropriate boot mechanisms: crontab entries on Linux, scheduled tasks (schtasks) on Windows, and a LaunchAgent plist (com.apple.syncd) on macOS. The script then spawns the malicious node process detached from the parent.
The second-stage payload systematically searches the filesystem for files matching wallet, seed, mnemonic, private-key, keystore, and API-token keywords across common extensions (.env, .key, .keystore, .pem, .json, .dat). It specifically targets key material from Metamask, Phantom, Ledger, Trezor, Solana, Ethereum, and Bitcoin wallets.
Harvested files are RSA-encrypted using an embedded public key and uploaded to IPFS via api.pinata.cloud using hardcoded Pinata API credentials. Runtime configuration is fetched from a hardcoded GitHub Gist URL under the user 'juang55'. The use of disguised staging paths, test fixture covers for payloads, and internal comments referencing 'phantom syncd v3 — topo durmiente' confirm intentional concealment.
Indicators of compromise
- Packages
- arb-kit
- Domains
- api.pinata.cloud
- github.com/juang55
Remediation
- Immediately uninstall arb-kit from all systems and projects
- Audit npm package.json and lock files for any versions of arb-kit and remove all references
- Rotate all cryptocurrency wallet credentials, private keys, and API tokens that may have been exposed
- Review system logs and cron/scheduled task configurations for suspicious entries, particularly those referencing .cache-db/.node-sync or syncd.js
- Scan systems for the presence of ~/.cache-db/.node-sync/syncd.js and remove if found
- Check for unauthorized LaunchAgent plists (com.apple.syncd) on macOS systems
- Monitor IPFS and Pinata for any exfiltrated wallet data
- Use npm audit to check for other potentially malicious packages in your dependency tree
Sources
- GitHub Advisory GHSA-8jx6-7fh4-vwx7 · GitHub Advisory Database
Cite this entry
"Malicious code in arb-kit (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 19, 2026; last updated August 19, 2026. https://supplychainattack.org/incident/malicious-code-in-arb-kit-npm-1nddv6
Suggest a correction
Found an error or have a newer source? Corrections to factual errors take priority over new entries.
Related incidents
- containedcritical
Malicious code in 3-buildsight-web (npm)
The npm package 3-buildsight-web contains malicious code that fetches and executes arbitrary JavaScript from a remote Bitbucket URL on module load, granting full page privileges to an unverified third party.
npmCompromised package - resolvedcritical
Malicious code in @usaa-grp-personal-profile/personal-profile-common (npm)
Malicious package @usaa-grp-personal-profile/personal-profile-common version 999.0.0 published to public npm as a dependency-confusion attack targeting an organization's internal registry. The package contains preinstall and postinstall hooks that exfiltrate hostname, username, and working directory to an attacker-controlled OAST endpoint on every install.
npmDependency confusionCompromised package - 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 - resolvedcritical
Malicious code in @syncraft-labs/vue (npm)
The npm package @syncraft-labs/vue version 0.4.1 contained malicious obfuscated code in its ESM build that implements a blockchain-hosted C2 dropper (EtherHiding pattern), enabling remote code execution on any consumer importing the package.
npmCompromised package