Malicious code in ventra-kit (npm)
The npm package ventra-kit contained malicious code that fetches and executes attacker-controlled JavaScript from a hardcoded IP address (31.97.137.157:45000), granting full Node.js remote code execution to any consumer invoking the default export.
- Disclosed
- Last updated
- Blast radius
- Any consumer that requires ventra-kit and invokes the default export receives remote code execution.
- Ecosystems
- Attack vectors
- Affected entities
- ventra-kitnpm package containing malicious code in default export
The npm package ventra-kit was found to contain malicious code in its default export. When the module is required and the default export is invoked, it makes an HTTPS request to a hardcoded bare-IP host at 31.97.137.157:45000/icons/116 and passes the response's credits field into new Function(), executing attacker-controlled JavaScript with full Node.js capabilities including require, process, Buffer, and globals.\n\nThe malicious loader was disguised as an icon CDN helper through the use of split protocol/separator/domain/path constants, an unused iconDomain map referencing cloudflare/fastly/akamai, and a setDefaultModule helper referencing cdnjs/font-awesome. The package declared dependencies on @primno/dpapi, better-sqlite3, and node-machine-id, consistent with a Windows browser-credential stealer payload.\n\nAny consumer that requires ventra-kit and invokes the default export receives remote code execution on the installer's machine. The incident was identified and credited to the OpenSSF malicious-packages repository.
Indicators of compromise
- Packages
- ventra-kit
- IPs
- 31.97.137.157
Remediation
- Remove ventra-kit from all projects immediately
- Audit all systems where ventra-kit was installed for signs of compromise, particularly Windows systems with browser credentials
- Review npm audit logs and package-lock.json files to identify all affected installations
- Rotate any credentials or sensitive data that may have been exposed on affected systems
- Monitor for suspicious outbound connections to 31.97.137.157:45000 in network logs
Sources
- GitHub Advisory GHSA-9wjh-9c25-4w8p · GitHub Advisory Database
Cite this entry
"Malicious code in ventra-kit (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 13, 2026; last updated August 13, 2026. https://supplychainattack.org/incident/malicious-code-in-ventra-kit-npm-jsxatt
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 rust-testing-utils (npm)
The npm package rust-testing-utils contained malicious code that impersonates the pino logger and executes remotely-fetched code with arbitrary privileges. The package spawns a child process that decodes a hardcoded URL, fetches attacker-controlled content, and executes it via Function constructor with full module-loading capability.
npmCompromised packageMalicious commit - containedcritical
Malicious code in stillm4ddpocs-demo-sprocket (npm)
The npm package stillm4ddpocs-demo-sprocket version 999.9.12 contains malicious code that exfiltrates system and project metadata via multiple channels (HTTPS, HTTP, and DNS) to a hardcoded callback host. The package uses a high version number to exploit dependency-confusion attacks against organizations with internal packages of the same name.
npmCompromised packageDependency confusion - containedcritical
Malicious code in @syncraft-labs/react (npm)
The npm package @syncraft-labs/react contained obfuscated malicious code in its ESM distribution that implements the EtherHiding pattern, fetching and executing arbitrary code from an Ethereum smart contract via RPC endpoints. The tampering occurred post-build in the dist/index.js artifact.
npmCompromised package - containedcritical
Malware in hydration-dim-kit
Malware was discovered in the npm package hydration-dim-kit. Any computer with this package installed or running should be considered fully compromised. All secrets and keys must be rotated immediately from a different computer.
npmCompromised package