Malicious code in alelo-client (npm)
alelo-client@99.0.0 on npm is a malicious dependency-confusion package that exfiltrates system information, environment variables, npm credentials, and application secrets to an attacker-controlled IP address during installation.
- Disclosed
- Last updated
- Blast radius
- Any developer or CI/CD system that installed alelo-client@99.0.0 from npm
- Ecosystems
- Attack vectors
- Affected entities
- alelo-client · 99.0.0
alelo-client@99.0.0 is a malicious npm package targeting an internal 'Alelo' namespace via dependency confusion. The package impersonates legitimate internal utilities and was published to the public npm registry.
During installation, the package executes preinstall.js and postinstall scripts that collect sensitive data. The preinstall script gathers hostname, username, platform, current working directory, and the full process environment, then POSTs this JSON payload to https://209.99.185.109/preinstall with TLS verification disabled. The postinstall script reads .env, .npmrc, package.json, and parent-directory .env files, executes whoami and id commands, and exfiltrates the collected data to https://209.99.185.109/postinstall, also with certificate verification disabled.
The tarball includes a login.ps1 script referencing an external npm account (oxy12@proton.me). The exfiltrated .npmrc file contains the installer's npm authentication token, and .env files contain application secrets, both of which are transmitted to the attacker-controlled bare IP address at install time.
The incident was identified and credited to the OpenSSF malicious-packages repository.
Indicators of compromise
- Packages
- alelo-client@99.0.0
- IPs
- 209.99.185.109
Remediation
- Immediately remove alelo-client from all package.json files and lock files
- Audit npm install logs to identify any systems that installed alelo-client@99.0.0
- Rotate all npm authentication tokens and credentials that may have been exposed
- Rotate all application secrets and environment variables that may have been exfiltrated
- Review and revoke any unauthorized access to systems that installed the package
- Monitor the attacker-controlled IP addresses (209.99.185.109) for any data exfiltration activity
- Implement npm package verification and allowlisting policies to prevent dependency confusion attacks
Sources
- GitHub Advisory GHSA-v865-m9wp-5xhc · GitHub Advisory Database
Cite this entry
"Malicious code in alelo-client (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 14, 2026; last updated August 14, 2026. https://supplychainattack.org/incident/malicious-code-in-alelo-client-npm-1s3n21
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 mtslink-depconf-probe-profileusername (npm)
The npm package mtslink-depconf-probe-profileusername contained malicious code designed to probe for internal namespace dependencies and exfiltrate install-time telemetry via DNS lookups to attacker-controlled infrastructure. The package was identified as a dependency-confusion probe targeting internal package namespaces.
npmCompromised packageDependency confusion - containedcritical
Malicious code in ssb-test-package (npm)
ssb-test-package@1.0.0 on npm contains malicious code designed as a dependency-confusion proof-of-concept. A preinstall hook executes arbitrary code on installation, performing host reconnaissance and writing results to a local file.
npmCompromised packageDependency confusion - resolvedcritical
Malicious code in gemini-cli-a2a-server (npm)
A malicious npm package named gemini-cli-a2a-server was published to exploit dependency confusion, mimicking a private Google internal component. The postinstall script collected host identifiers and exfiltrated them to a hardcoded external endpoint.
npmDependency confusionCompromised package - containedcritical
Malicious code in gaarf-bq (npm)
The npm package gaarf-bq contained malicious code in its postinstall lifecycle script that collected and exfiltrated host identifiers to an attacker-controlled domain. The package name resembles Google's legitimate gaarf (ads-api-report-fetcher) BigQuery component, consistent with dependency-confusion tactics.
npmCompromised packageDependency confusion