Skip to content
supplychainattack.orgSupply chain attack incident catalog
resolvedcritical

Malicious code in eslint-publish-release (npm)

eslint-publish-release@99.9.1 is a malicious npm package that uses dependency confusion to deliver arbitrary code from a Google Cloud Storage bucket. The package is a hollow stub whose only effect is to fetch and execute code from an external, untrusted source during installation.

ShareXLinkedInHacker News
Disclosed
Last updated
Blast radius
Any npm consumer installing eslint-publish-release@99.9.1
Ecosystems
Attack vectors
Affected entities
  • eslint-publish-release · 99.9.1

eslint-publish-release@99.9.1 was published to npm as a malicious package designed to deliver arbitrary code via dependency confusion. The package itself is a hollow stub with an empty index.js and no lifecycle scripts.

The attack vector exploits npm's dependency resolution by declaring a direct HTTPS tarball URL in package.json pointing to https://ltidi.storage.googleapis.com/depenconf/ltidisafe-3.6.4.tgz rather than resolving a package from the npm registry. When installed, npm fetches and executes arbitrary code from this Google Cloud Storage bucket into the consumer's node_modules.

The package exhibits multiple indicators of a dependency-confusion attack: the name mimics legitimate ESLint release tooling, the version number 99.9.1 is characteristic of confusion lures, the URL path contains the token "depenconf" (dependency-confusion), and the bucket is not a publisher-matched or npm-registry destination. The package structure—empty main module with no independent utility—serves solely as a delivery vector.

The incident was identified and credited to the OpenSSF malicious-packages repository.

Indicators of compromise

Packages
  • eslint-publish-release@99.9.1
  • ltidisafe
Domains
  • ltidi.storage.googleapis.com

Remediation

  • Remove eslint-publish-release@99.9.1 from all package.json files and lock files
  • Audit npm install logs for any installations of eslint-publish-release@99.9.1 or the ltidisafe package
  • Review node_modules for any unexpected packages or modifications, particularly ltidisafe
  • Regenerate any credentials or secrets that may have been exposed on affected systems
  • Update to a legitimate ESLint release tooling package if needed, verifying the publisher
  • Implement npm registry-only policies to prevent installation of packages from arbitrary URLs

Sources

  1. GitHub Advisory GHSA-jmh4-xr6v-622w · GitHub Advisory Database

Cite this entry

"Malicious code in eslint-publish-release (npm)." supplychainattack.org, Supply Chain Attack Incident Catalog. Disclosed August 13, 2026; last updated August 13, 2026. https://supplychainattack.org/incident/malicious-code-in-eslint-publish-release-npm-1fg1rn

Suggest a correction

Found an error or have a newer source? Corrections to factual errors take priority over new entries.

  1. 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
  2. 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
  3. resolvedcritical

    Malicious code in lumen-pages-community (npm)

    lumen-pages-community@9.9.9 on npm contains malicious code that executes a postinstall hook to exfiltrate installer metadata (hostname, username, working directory, platform, Node version, CI environment, npm user-agent) to a hardcoded webhook.site URL. The high version number and lack of functionality suggest a dependency-confusion attack.

    npmCompromised packageDependency confusion
  4. resolvedcritical

    Malicious code in @gfe/lx-watcher (npm)

    The npm package @gfe/lx-watcher contained malicious code that exfiltrated host metadata (hostname, OS username, working directory, timestamp) via npm lifecycle hooks to a hardcoded webhook.site endpoint. The package exploited dependency confusion by using a scoped name (@gfe/*) with a no-op stub, allowing silent resolution against the public registry while leaking host identifiers.

    npmDependency confusionCompromised package