LiteLLM 1.82.7 and 1.82.8 were malicious for about 40 minutes in March. Did anyone here actually check whether they pulled one?
Disclosure for rule 2: I work at InvisiRisk, we build CI/CD security tooling. No links to us below. Flairing this as Education rather than Tools since it isn't about our product, happy to switch if the mods prefer.
On March 24 two malicious LiteLLM releases went up on PyPI, 1.82.7 and 1.82.8, live about 40 minutes before they were pulled. Part of the wider TeamPCP campaign that started with a leaked Trivy automation token. FBI FLASH on it, TLP: CLEAR so it's shareable: https://www.ic3.gov/CSA/2026/260702.pdf
The mechanism is the part worth knowing if you run a gateway. The package shipped a .pth file, and Python executes those at interpreter startup rather than on import. So it didn't matter whether your code ever called litellm. If it was installed and any Python process started, it ran.
It took environment variables, SSH keys, cloud credentials, Kubernetes service account tokens, and provider API keys.
That last one is why I think this is an MLOps problem specifically. LiteLLM sits in front of everything by design, so that one process has your OpenAI key, your Anthropic key, your Bedrock creds, whatever else you route through it. Probably the highest-value place in an ML stack to land a credential stealer, and for 40 minutes it was also the easiest.
So: has anyone actually gone back and confirmed either way?
Most of the obvious checks don't work here. If you pin loosely, something like litellm>=1.82, and a build ran in that window, you got it. Resolved manifests get discarded, so "what did we install on March 24" is often unanswerable months later. And a .pth payload runs before anything a scanner treats as import time.
One thing that does work and is faster than lock file archaeology. CloudSEK put up a public lookup for this incident: https://exposure.cloudsek.com/ai-supply-chain-incident
Worth being precise about it, since it answers a different question. Version history tells you whether you pulled the bad package. The lookup tells you whether your secrets turned up in what the attackers actually collected. It's closer to an outcome, and a 30 second check.
A hit still isn't proof of compromise. The FBI advisory makes the same point, that finding the dependency doesn't prove the code ran. Treat it as a reason to go dig, not as an incident on its own. And if your org does show up, keep it out of this thread.
Curious whether anyone confirmed, and how. Lock file history? Registry pull logs? Or did you just rotate everything and skip the reconstruction?