2026-10-21 · 2026-Q4
LiteLLM 1.107.0 on PyPI and Docker Ships a Credential Stealer That Runs at Every Python Startup
Should this run hold this key at all?
- Fixable
- Vendor patch
- Vendor response
- Patched
- In the wild
- Yes
- Actor
- Attacker
Target
BerriAI LiteLLM: all PyPI `litellm` 1.107.0 wheels and the `v1.107.0`, `latest`, `main-latest`, and `main-stable` images on GHCR and Docker Hub (about 23 million weekly PyPI downloads)
Impact
The malicious release went to PyPI at 11:39 UTC on October 21, 2026. Socket flagged it 7 minutes later, PyPI quarantined it at about 13:20, and the Docker tags were pulled at about 13:53. It drops `cook.pth`, `cook.py`, and `sitecustomize.py` into site-packages, so the payload runs on every interpreter start even if LiteLLM is never imported. The stealer takes cloud, Kubernetes, SSH, GPG, and registry credentials, AI provider keys and AI coding tool auth files, browser data, and shell history. Where a proxy database is configured, it also queries LiteLLM's stored provider credential tables. Data is encrypted and POSTed to the lookalike domain `www.litellm[.]dev`. A Linux and macOS loader polls a GitHub dead-drop hourly for a second stage, which was never populated. Wiz says the `.pth` plus `sitecustomize.py` persistence pairing is a first documented in-the-wild case. Last safe version is 1.106.2. This is LiteLLM's second PyPI compromise of 2026
Root cause
Build provenance shows the release workflow building from the lookalike repository `Berri-AI/litellm` (hyphenated), where 10 commits were pushed that morning. LiteLLM's October 23 root-cause analysis traces it to an internal Agent Platform master key committed to a public repository on May 27, 2026 and force-pushed over but never revoked. On October 10 the attacker used it to call the platform's agent-listing API, which returned an organization owner's GitHub CLI OAuth token; workflow runs then dumped repository secrets holding two more maintainers' tokens, which were used to disable branch protection, trigger the release, and meet the two-approver rule
Sources
Catalog
Cite this: AgentProv incident record: LiteLLM 1.107.0 on PyPI and Docker Ships a Credential Stealer That Runs at Every Python Startup (2026-10-21). https://agentprov.com/incidents/2026-10-21-litellm-1-107-0-on-pypi-and-docker-ships-a-credential-stealer-that-runs-at
Related
- Also L1 · 2026-10-17OpenCode Console Breach Exposes Users' Stored OpenAI, Anthropic, and Google API KeysL1Credential
- Also L1 · 2026-10-13IBM MCP Context Forge Shipped a Known JWT Secret, Letting Anyone Mint Platform Admin Tokens (CVE-2026-53709)L1Credential
- Also L1 · 2026-10-08"AgentCorruption": One Prompt to an Amazon Bedrock AgentCore Agent Yields Credentials for Every Agent in the Account and RegionL1Credential