The short answer
- LiteLLM says its release pipeline was compromised on October 21, 2026 and pushed a malicious v1.107.0 to PyPI and its Docker registries.
- Affected: litellm==1.107.0 on PyPI, and the Docker Hub and GHCR tags v1.107.0, latest, main-latest and main-stable during LiteLLM's stated windows.
- LiteLLM says to pin litellm==1.106.2, remove the startup files it lists, and rotate every credential the host could reach.
- Researchers at Socket, Datadog, JFrog and Wiz say the malware targets cloud, AI provider and developer tool credentials; Wiz says it saw stolen credentials used about 4.5 hours after theft.
- LiteLLM believes the attacker used stolen GitHub CLI OAuth tokens to run its release workflow; it is still confirming how the attacker got in.
A malicious LiteLLM 1.107.0 was published to PyPI and LiteLLM's Docker registries on October 21, 2026. LiteLLM says its "release pipeline was compromised" and that the version "contained compiled malware which steals credentials and loads remote-code execution tools." In its incident post, LiteLLM says to pin version 1.106.2, remove the malware and rotate credentials.
#What changed?
LiteLLM is an AI gateway that provides a common interface for LLM providers, and it gets about 23 million weekly downloads, according to The Register, Socket and Datadog.
Affected, per LiteLLM:
Channel | Affected | Window (UTC, October 21, 2026) |
|---|---|---|
PyPI | | 11:39:51 to 13:23 |
Docker Hub ( | | 11:46:56 to 14:20 |
GHCR ( | | 11:46:56 until unavailable by 13:51 |
LiteLLM says "The official v1.107.0 source tag in GitHub does not contain the malicious files" and that the artifacts "were built from an attacker-controlled repository." It says "Enterprise Customers running the private enterprise release of LiteLLM were not impacted."
As of October 22, 2026, PyPI lists 1.106.2 as the latest release, and 1.107.0 is no longer available. A dotsbot.co check of Docker Hub the same day found the latest, main-latest and main-stable tags pointing to the v1.106.2 image.
LiteLLM also says "All previous versions are safe." That is LiteLLM's claim. Versions 1.82.7 and 1.82.8 were compromised in a separate incident earlier in 2026, according to Datadog and the OSV record MAL-2026-2144; JFrog dates that first compromise to March 2026. Socket says its investigation "did not certify every earlier artifact as clean."
#What the malware does
Researchers describe it at a high level. Socket says the release "contains malicious Python startup files that collect cloud credentials, private keys, browser data, and authentication files for AI development tools," and that "a normal Python startup can activate them without the application importing LiteLLM." Datadog says it "targets cloud, developer, AI-tool, browser and LiteLLM proxy credentials," including the provider keys the proxy stores in its database. Researchers say a second component could fetch and run more code, but JFrog says it was "dormant at observation time."
Only Wiz reports use of the stolen credentials: "Wiz Research has observed abuse of stolen credentials, starting approximately 4.5 hours post-exfiltration." Wiz says the attacker checked AWS instance role credentials taken from CI runners and Kubernetes nodes between 16:20 and 17:01 UTC. LiteLLM has not commented on Wiz's finding.
#Who is affected and when?
LiteLLM says: "You are affected if you used an unpinned version of LiteLLM between 11:39 and 13:23 UTC via pip or if you used the docker image v1.107.0, latest, main-latest, or main-stable between 11:46 and 14:20 UTC." It adds: "If you ran pip install on LiteLLM v1.107.0 or started the docker image in the compromised interval, assume it is compromised."
Socket notes that "Deployments following a floating tag could therefore receive the affected release without explicitly selecting 1.107.0."
#How to check whether you were hit
- LiteLLM says "If an environment started Python with litellm==1.107.0, treat that environment as compromised."
- LiteLLM suggests checking the installed version with
pip show litellm. It also warns that any Python start in an affected environment, including pip, runs the malware again. - Socket suggests you "Check lockfiles, caches, build logs, container layers, and running image digests, including deployments that used floating tags."
- LiteLLM lists filesystem evidence to search for in its post, and says "Finding one confirms exposure, but not finding one does not prove the environment is clean."
#What should you do?
LiteLLM's steps, in its order. First, it says: "Don't start with pip install."
- From a shell, delete the startup files LiteLLM lists in its incident post from every affected site-packages directory.
- Stop the detached Python background process LiteLLM describes.
- "Reinstall pinned to litellm==1.106.2." LiteLLM adds: "Rebuilding images and venvs from scratch is better." For Docker, use the v1.106.2 image.
- "If 1.107.0 was ever installed on a host with outbound internet, assume the exfil succeeded."
- "Rotate everything listed above that the host could reach." LiteLLM names, in particular:
- "the instance/task IAM role"
- "every provider key stored in the LiteLLM proxy DB, plus the master and virtual keys"
- "the DATABASE_URL password"
- "any secret that was in the environment of any process on the host"
- "Check CloudTrail for GetCallerIdentity from the instance role around install time, then for use of the role's credentials from outside your infrastructure."
LiteLLM says the instructions came from the researcher who helped it detect the incident. The Upwind security research team first reported the compromise in a GitHub issue at 12:06 UTC on October 21. Datadog advises rotating credentials "From a clean machine."
#How did it happen?
This is LiteLLM's account, which it says it is still confirming. LiteLLM says "The attacker had access to three sets of developer GitHub CLI credentials," one of which "belonged to one of our two GitHub organization owners." It says the attacker used it to disable branch protections, then ran the release workflow against a lookalike repository, which Socket says differed "by one hyphen from the legitimate BerriAI/litellm project."
On where the tokens came from, LiteLLM says it has "observed specific situations in which Claude Code will embed a user's GitHub CLI OAuth token into a response body," and that such tokens "may appear in LiteLLM logs." It says it believes the attacker reached an internal LiteLLM deployment exposed to the public internet and took the tokens from its logs. That is LiteLLM's claim about Anthropic's product, and no response from Anthropic appears in our sources. LiteLLM says it has "not yet confirmed how the attacker gained access" and suspects "a recently patched vulnerability."
LiteLLM says "All tokens which were involved in this attack have been revoked" and, as of 02:19 UTC on October 22, 2026, that "regular LiteLLM releases remain paused." BerriAI, which develops LiteLLM, did not respond to The Register.
#How does it compare?
This is LiteLLM's second supply-chain compromise in 2026. Datadog says "No connection between the two compromises has been established at time of writing," and JFrog says the incidents "should be treated as separate campaigns." For another case of exposed provider keys, see our coverage of the OpenCode console breach. For agent security controls, see Microsoft's agentic insider security controls. More is in our Privacy and Security hub.
#What is still unclear?
- How the attacker got in. LiteLLM has not confirmed it.
- The Claude Code token claim. It is LiteLLM's, with no Anthropic comment in our sources.
- Scale. No source gives a download count for 1.107.0 or a number of affected users.
- Who did it. No source names an attacker.
- More detection guidance. LiteLLM says it "will be posting more detail on how specifically to find indication of compromise."
- No CVE yet. The only database record is OSV's MAL-2026-2144.
Frequently asked questions
Which LiteLLM versions are affected?
LiteLLM says litellm==1.107.0 on PyPI and the Docker images v1.107.0, latest, main-latest and main-stable were compromised on October 21, 2026. It says to pin version 1.106.2.
When were the malicious versions available?
Per LiteLLM's timeline, the PyPI package was live from 11:39 to 13:23 UTC on October 21, 2026, the Docker Hub tags were compromised from 11:46 to 14:20 UTC, and the GHCR tags from 11:46 UTC until 13:51 UTC.
Which keys should I rotate?
LiteLLM says to rotate everything the host could reach, in particular the instance or task IAM role, every provider key stored in the LiteLLM proxy database plus the master and virtual keys, the DATABASE_URL password, and any secret in the environment of any process on the host.
Were all earlier LiteLLM versions safe?
LiteLLM says all previous versions are safe. Separately, versions 1.82.7 and 1.82.8 were compromised in a separate incident earlier in 2026, according to Datadog and the OSV record MAL-2026-2144; JFrog dates that first compromise to March 2026.
Sources
Every factual claim in this article traces back to one of these.
- Contained: Oct 21, 2026 LiteLLM release v1.107.0 Compromised
- GitHub issue #47826: litellm 1.107.0 compromised
- LiteLLM supply chain attack hoovers up passwords and secrets
- LiteLLM PyPI Package and Docker Images Compromised to Steal Cloud and AI Credentials
- LiteLLM Compromised, Steals Credentials
- LiteLLM supply chain compromise: What you need to know
- LiteLLM Hijacked Again: Malicious 1.107.0 Wheels Steal Credentials and Load Remote Code
- MAL-2026-2144
- litellm release data
- litellm/litellm image tags
One email a week on AI agents and bots.
Launches, pricing and rollout changes and the guides worth reading. At most once a week, and you can leave with one click.


