Malicious code in connect-contingency (npm)
connect-contingency@99.9.1 is a malicious npm package that uses dependency confusion tactics to pull attacker-controlled code from an external Google Cloud Storage bucket. The package is a hollow stub with an inflated version number and declares a direct tarball dependency on ltidisafe, which is downloaded and executed during installation outside npm registry integrity controls.
- Disclosed
- Last updated
- Blast radius
- Any developer or CI/CD system that installed connect-contingency@99.9.1 would execute attacker-controlled code from the external tarball during npm install lifecycle scripts.
- Ecosystems
- Attack vectors
- Affected entities
- connect-contingency · 99.9.1
connect-contingency@99.9.1 was published to npm as a malicious package designed to execute attacker-controlled code on installation. The package itself is a hollow stub with an empty index.js file.\n\nThe attack mechanism relies on a direct tarball dependency declared in package.json pointing to https://ltidi.storage.googleapis.com/depenconf/ltidisafe-3.4.7.tgz on an anonymous Google Cloud Storage bucket. When npm install is executed, this tarball is downloaded from the external, non-registry host and installed, bypassing npm's integrity and audit mechanisms.\n\nThe package exhibits classic dependency-confusion staging characteristics: an inflated 99.9.x version number, an empty main module, and a suspicious external URL path (/depenconf/). The sole purpose of the package is to pull attacker-controlled code into the installer's environment via lifecycle scripts (preinstall/install/postinstall) declared in the malicious tarball.\n\nThe incident was identified and credited to the OpenSSF malicious-packages project.
Indicators of compromise
- Packages
- connect-contingency@99.9.1
- Domains
- ltidi.storage.googleapis.com
Remediation
- Immediately uninstall connect-contingency from all environments
- Audit npm install logs and lock files for any installations of connect-contingency@99.9.1
- Review and revoke any credentials or secrets that may have been exposed during installation
- Scan systems that installed this package for signs of compromise or persistence mechanisms
- Implement npm registry-only policies to prevent installation of packages with external tarball dependencies
- Monitor for similar dependency-confusion attacks using inflated version numbers and external URLs
Sources
- GitHub Advisory GHSA-jc5p-q2fg-2r77 · GitHub Advisory Database
Cite this entry
"Malicious code in connect-contingency (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 7, 2026; last updated August 7, 2026. https://supplychainattack.org/incident/malicious-code-in-connect-contingency-npm-147gs6
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 depcruise-wrap-stream-in-html (npm)
depcruise-wrap-stream-in-html@99.9.1 is a malicious npm package that mimics an internal helper of dependency-cruiser. It is a hollow package that downloads and executes arbitrary code from a Google Cloud Storage bucket during installation.
npmCompromised packageDependency confusionTyposquatting - resolvedcritical
Malicious code in fastly-vcl-language-client (npm)
The npm package fastly-vcl-language-client contained malicious code in a preinstall script that collected system information and CI environment variables, exfiltrating data to an external webhook endpoint. The package appears to be a dependency-confusion attack targeting internal Fastly tooling.
npmCompromised packageDependency confusion - containedcritical
Malicious code in @polymarkets/clob-client-v2 (npm)
@polymarkets/clob-client-v2 (npm) is a malicious package that typosquats the legitimate @polymarket scope and redirects its inquirer dependency to a lookalike npm registry (registrynpmjs.to) to deliver arbitrary code execution during installation and on first require.
npmTyposquattingCompromised packageDependency confusion - containedcritical
Malicious code in @mexc/shared-utils (npm)
Malicious package @mexc/shared-utils published to npm without scope ownership, exploiting dependency-confusion to execute arbitrary code via postinstall hook. The payload collects host metadata and demonstrates install-time code execution against CI/build systems.
npmDependency confusionCompromised package