Security

October 2026 Supply Chain Attacks: npm, PyPI and GitHub

LiteLLM, tensorlake, @subql/common and GhostAction: what was compromised in October 2026, who is affected and a checklist to protect your builds and secrets.

Quick answer

In October 2026 attackers published malicious versions of trusted packages, including @subql/common 5.8.3 and tensorlake 0.5.144 on npm and litellm 1.107.0 on PyPI and Docker, and pushed credential-stealing GitHub Actions workflows to hundreds of repositories. If any of these ran on your machines or CI, rebuild from clean images and rotate every secret they could reach.

Key takeaways

  • Each attack started with stolen developer or maintainer credentials, then used the project's own release pipeline to publish malware.
  • The payloads target secrets: npm and GitHub tokens, cloud keys, SSH keys, Kubernetes configs and AI provider API keys.
  • Uninstalling is not enough. The vendors recommend rebuilding affected machines and runners and rotating credentials.
  • npm 12 blocks dependency install scripts by default, but @subql/common 5.8.3 also ran when imported, so that default alone would not have stopped it.
  • Pin exact versions with a lockfile, limit who can override branch protection, and keep secrets out of logs.

Which packages were compromised in October 2026?

Date (2026)WhatBad versionSafe version
5 October@subql/common on npm (SubQuery)5.8.35.8.2
From 7 OctoberGhostAction: malicious GitHub Actions workflows pushed with stolen tokenssecurity-audit.yml or github_actions_security.ymlDelete the workflow, rotate secrets
8 Octobertensorlake on npm0.5.144Earlier versions; PyPI and Cargo packages showed no compromise
21 Octoberlitellm on PyPI, Docker Hub and GHCR1.107.0 and the latest, main-latest, main-stable image tags during the incident1.106.2

These are not bugs in the code. In each case someone obtained a maintainer's credentials and used them to publish malware under the project's real name, so the packages looked legitimate to anyone installing them.

How did attackers get into trusted release pipelines?

  • @subql/common: according to StepSecurity, a temporary branch changed the release workflow to download a tarball from ci-artifacts.dev and publish it in place of the real package, with no hash or signature check. The workflow still had trusted publishing permissions, so the release carried npm provenance. Provenance shows which workflow published a package, not whether that run was authorised.
  • tensorlake: Aikido reports that the GitHub repository was compromised for about 20 hours before the attacker triggered the npm publish, using commits made under a maintainer's identity.
  • LiteLLM: the LiteLLM team says the attacker held GitHub CLI credentials for three developers. When branch protection rejected a change to the release workflow, an organisation owner's credential was used to override it, and the workflow built and published artifacts from a lookalike repository. The team believes the tokens were taken from logs on an internal deployment exposed to the internet.
  • GhostAction: The Hacker News, citing StepSecurity, Socket and GitGuardian, reports that leaked personal access tokens were used to commit a fake "security audit" workflow that sends repository secrets and credentials found in the code and git history to the attacker.

What does the malware steal?

The common goal is credentials, which let attackers move on to cloud accounts and to more packages. Reported behaviour includes:

  • Reading .npmrc, .env, AWS, SSH and Kubernetes files and the full process environment, and trying gh auth token (@subql/common).
  • Reading secrets from GitHub Actions runner memory and from AWS Secrets Manager, SSM and Vault (@subql/common).
  • Stealing CI, cloud and browser credentials, and wiping the machine if an embedded GitHub token is revoked (tensorlake, a Shai-Hulud variant according to Aikido). Plan token revocation on infected hosts carefully.
  • Running on every Python start in the environment, including pip, through cook.pth and sitecustomize.py files, and loading remote-code tools (litellm 1.107.0).

How do I check whether my projects are affected?

  1. Search lockfiles (package-lock.json, pnpm-lock.yaml, yarn.lock, requirements*.txt, poetry.lock) for the bad versions above, including as indirect dependencies. StepSecurity notes that @subql/cli, @subql/node-core and @subql/query could pull in 5.8.3 through version ranges.
  2. For LiteLLM, run pip show litellm and look for litellm-1.107.0.dist-info, cook.pth and sitecustomize.py. The LiteLLM team advises not running pip first in a suspect environment, and says finding nothing does not prove it is clean.
  3. Check Docker images built or pulled on 21 October that used litellm:latest or the main-* tags.
  4. Search your GitHub organisation for security-audit.yml or github_actions_security.yml added since 31 August 2026, including in forks.
  5. Review CI logs from the affected dates for installs of these versions.

What should I do if a compromised package ran?

  • Isolate and rebuild: treat the laptop, server or CI runner as compromised. Rebuild containers, virtual environments and runners from clean images rather than just uninstalling.
  • Rotate secrets: npm and PyPI tokens, GitHub tokens, cloud keys and instance roles, SSH keys, Kubernetes and Vault credentials, database passwords and AI provider API keys that the process could read.
  • Audit use: review cloud logs (for example AWS CloudTrail) and GitHub audit logs for activity from unfamiliar locations after the install time.
  • Pin a safe version: @subql/common@5.8.2, litellm==1.106.2, and remove tensorlake@0.5.144.

How can teams protect their software supply chain?

No single setting would have stopped all four attacks, but each step removes an easy path:

  • Commit lockfiles and install with `npm ci` (or the equivalent) so builds use reviewed versions rather than whatever was published that morning.
  • Upgrade to npm 12. GitHub made dependency install scripts, Git dependencies and remote tarball dependencies opt-in, and you approve trusted scripts with npm approve-scripts. Remember that code can still run when a package is imported.
  • Protect release pipelines: require signed commits and reviews on release workflows, keep the number of organisation owners who can bypass branch protection small, and avoid temporarily widening release permissions.
  • Prefer trusted publishing (OIDC) over long-lived publish tokens. GitHub is restricting npm granular tokens that bypass two-factor authentication.
  • Keep secrets out of logs and do not expose internal tools such as AI gateways to the internet without authentication.
  • Limit what CI can reach: give each job only the secrets it needs and restrict outbound network access from build runners where you can.

If you run a website rather than a codebase, the same pattern hit WordPress this month; see our post on the Rank Math PRO and UpdraftPlus breaches. For background on why attacks are speeding up, read how AI agents hacked 100+ websites.

Naarvix builds and maintains web and mobile products for clients worldwide, with locked-down CI, pinned dependencies and documented secret rotation as part of the handover. If you would like a review of your pipeline, see our custom software development service or get in touch.

Sources

Frequently asked questions

What is a software supply chain attack?

It is an attack on something your software depends on, such as an open source package, a build tool or a vendor's update system, instead of on your own code. Malware published through a trusted package reaches everyone who installs that version.

Does npm 12 stop malicious packages?

It removes one common route. npm 12 blocks dependency install scripts unless you approve them, but malware can also run when a package is imported, as with @subql/common 5.8.3. Lockfiles, reviewed upgrades and limited secrets are still needed.

Which LiteLLM version is safe?

The LiteLLM team says to pin litellm==1.106.2 or another version published before the incident. Only 1.107.0 and the Docker tags pointed at it on 21 October 2026 were compromised; the official GitHub source tag did not contain the malicious files.

WRITTEN BY

Nikhil Kumar

Co-founder, Naarvix Solutions · Senior Software Developer

A senior software developer and Naarvix co-founder, Nikhil brings an engineering perspective to the company’s products and client projects. His focus is on turning ideas into practical software, with care for how it works and the people who use it.

Start a conversation

Let’s find your next step.

Bring a goal, an idea or a problem worth solving.

Talk to Naarvix