Two compromised versions of LiteLLM sat on PyPI for roughly 40 minutes on the morning of March 24, 2026. That window was enough to capture secrets from around 434,000 CI/CD pipeline runs across nearly 2,500 organizations, including AWS, Samsung, Cisco, Salesforce, Siemens, and Deloitte. In August, researchers at CloudSEK and Hudson Rock confirmed they had obtained the raw exfiltrated data: a 153GB archive containing 433,909 files of environment variables, cloud keys, Kubernetes secrets, and API tokens harvested live from running pipelines, as covered by Help Net Security’s reporting on the credential archive.
If LiteLLM runs anywhere in your stack, or you touch any AI proxy infrastructure at all, you need answers to three things: whether you were exposed, what to rotate first, and whether the rotation you did back in March actually held. That last one matters more than it sounds, because “we rotated everything” has already burned at least one very large company.
How the Breach Happened
The attack didn’t start with LiteLLM. On March 19, 2026, a threat group called TeamPCP compromised the build pipeline of Trivy, a vulnerability scanner half the industry runs, and pushed a poisoned release. LiteLLM’s own CI pipeline ran Trivy, so the poisoned scanner had legitimate read access to the project’s runner environment. The attackers used that to steal LiteLLM’s PyPI publishing tokens and ship two malicious releases of their own: versions 1.82.7 and 1.82.8. KICS and the Telnyx Python SDK got hit in the same campaign.
The payload design is the part worth studying. The malicious package dropped a .pth startup hook into site-packages, so the code ran the moment any Python interpreter started on the machine, whether or not anything imported LiteLLM. From there it harvested environment variables, read local credential files like .aws/credentials and .kube/config, tried to move laterally across Kubernetes clusters, and installed a systemd backdoor dressed up as a generic telemetry service. InfoQ’s coverage of the PyPI compromise put downloads of the compromised release above 40,000. For scale, LiteLLM normally gets downloaded around 3 million times a day.
The exfiltration had a nasty fallback, too. According to CloudSEK, stolen data was encrypted and sent to a typosquatted domain, and when that failed, the malware created a public repository inside the victim’s own GitHub account and uploaded the loot as a release asset. Some companies were publishing their own secrets to the open internet and had no idea.
Worth Knowing: The malicious code only existed in the PyPI artifacts. The GitHub source repository stayed clean the whole time, so a developer reviewing the code on GitHub saw nothing wrong. Source review isn’t artifact verification. If you don’t check that what the registry serves matches the upstream source, this class of attack is invisible to you.
How to Check If You Were Exposed
Three checks, from quickest to most involved.
1. Confirm whether the compromised versions ever ran
The malicious versions went live on PyPI at 10:39 UTC on March 24, 2026 and got quarantined about 40 minutes later. The project’s advice: treat any install from that day before 16:00 UTC as suspect. Search your lockfiles, pip caches, SBOMs, and container image histories for 1.82.7 and 1.82.8. And check your internal artifact mirrors. An Artifactory or Nexus proxy that cached the bad release in March can keep serving it internally long after PyPI pulled it.
Keep the .pth mechanism in mind when you scope this. The question isn’t “which applications import LiteLLM,” it’s “which machines had the package installed at all,” because every Python process on an infected machine triggered the payload.
2. Hunt for persistence
Rotation is pointless if the attacker still has a foothold. Check developer machines, CI runners, and containers for unauthorized .pth files in site-packages and for suspicious systemd units, especially anything posing as a system telemetry service. And review activity from March 24 onward, not just the 40-minute window. Persistence is there so the access outlives the infection.
Pro Tip: Don’t limit the persistence hunt to live machines. Base container images rebuilt in late March may have baked the payload into every image derived from them since. Scan your image registry for the affected LiteLLM versions and for unexpected .pth files, then trace which running workloads came from flagged images.
3. Check whether your secrets are in the dump
Hudson Rock has published a domain lookup tool and is running ethical disclosures for affected organizations, and CloudSEK maintains a high-confidence victim list. Use them, but know their limits. Attribution in this dataset is genuinely hard. One dump with a siriusxm.com committer email actually traced, through its self-hosted GitLab endpoints, to AdsWizz, a SiriusXM subsidiary. And a large share of the dumps are generic pipeline configurations with no identifying domain, email, or server name at all. Absence from a victim list is not evidence of absence. If your pipelines ran the compromised versions, assume exposure no matter what a lookup tool tells you.
What to Rotate, in What Order
The guidance from both research teams is blunt: treat every secret the LiteLLM environment could reach as compromised. That covers secrets on disk, in memory, injected into CI jobs, and anything retrievable through instance metadata services. Work down by blast radius:
| Priority | Credential type | Why it comes first |
|---|---|---|
| 1 | Cloud IAM keys (AWS, GCP, Azure) | Direct control of infrastructure, data stores, and billing. This is where attackers monetize fastest. |
| 2 | GitHub and GitLab PATs, package publishing tokens | These let an attacker poison your releases and turn your company into the next link in the supply chain. |
| 3 | Kubernetes service account tokens and kubeconfigs | Lateral movement across clusters was built into the payload, not a theoretical risk. |
| 4 | Database passwords and third-party API keys | Dumped in plain text in the archive, often with no attribution, so nobody will warn you they leaked. |
| 5 | AI provider API keys | Billing abuse, quota theft, and access to whatever data flows through your LLM routing layer. |
One word matters more than the rest of this article: revoke, don’t just rotate. That distinction is exactly how this breach grew in the first place. After the initial Trivy compromise, its maintainers rotated an automation token but didn’t fully revoke the old one for around 20 days, which handed the attackers a three-week window to force-push malicious code into third-party builds.
Important: Rotating a credential creates a new one. Revoking kills the old one. Plenty of platforms let both exist side by side, and CI systems, long-lived sessions, and cached tokens will happily keep honoring the old secret. After every rotation in this incident response, verify the old credential actually fails, then check audit logs for anything that used it after March 24.
This isn’t theoretical. Independent researcher Kevin Beaumont tested credentials from the dump, months after the attack, against an organization whose disclosure policy allowed it. The company had told him the leak was old news because everything had been rotated. His verdict: “Almost every one worked.” That was one of the largest US tech companies, not some resource-starved startup.
Two more steps before you call it done. Review AWS CloudTrail and Kubernetes API audit logs for anomalous activity going back to March 24, 2026, and put strict egress filtering on runner environments so the next payload has nowhere to send your secrets.
What This Incident Says About AI Supply-Chain Controls
The uncomfortable part is that this wasn’t an AI failure. It was a DevOps failure, made worse by how fast teams have bolted AI tooling onto their pipelines. As Beaumont put it, the teens behind TeamPCP ran circles around organizations obsessed with shipping AI while their build security lagged behind. A supply chain attack of this shape is now the default threat model for any company whose product depends on open source. Which is every company.
The structural fixes aren’t new either. NIST’s Secure Software Development Framework has warned for years that build pipelines are the soft underbelly of modern companies, and its practices map directly onto what failed here: verified artifact integrity, least-privilege pipeline credentials, and egress controls on build environments. The compliance frameworks are catching up too. SOC 2’s Trust Services Criteria added explicit focus areas on software supply chain security and vendor risk in the 2022 revision, and ISO 42001 extends that discipline to the AI layer: how you govern the AI tooling and third-party models your business now depends on. If this incident is what finally puts AI governance on your roadmap, Axipro’s ISO 42001 implementation services cover exactly this territory, from supplier controls to auditable AI asset inventories.
Expect the questionnaires to change as well. Enterprise buyers already probe vendors on SOC 2 and ISO 27001. After a breach that turned an AI proxy into a credential vacuum, questions about AI dependencies, artifact verification, and pipeline secret scoping are coming. Our guide to security certifications for AI agent vendors maps what buyers now ask for, and the pattern rhymes with what we covered in the May 2026 GitHub breach: developer tooling has become the highest-value target in most companies, and the security model around it hasn’t kept pace.
Insider Note: [REVIEW: confirm or replace with a real Axipro observation] In the gap analyses we run before ISO 27001 and SOC 2 engagements, over-scoped CI/CD credentials are the single most common finding: runners that build a marketing site holding organization-wide cloud admin keys, because scoping them properly was someone’s someday task. Every one of those environments would have leaked its full keyring in this breach. Least-privilege pipeline secrets are tedious to set up and boring to maintain, which is exactly why attackers count on you not doing it.
There’s a testing angle here as well. A payload that moved laterally through Kubernetes and planted systemd persistence is the kind of attack path a good offensive exercise should catch before a real adversary does. If your last test predates your AI infrastructure, our breakdown of what auditors expect from ISO 27001 penetration testing is a practical place to start scoping one.
The LiteLLM breach compressed the whole modern supply-chain threat into 40 minutes: one upstream compromise, hundreds of thousands of exposed pipelines, and secrets that stayed live for months because rotation got treated as a checkbox. Check whether the bad versions ever touched your environment, hunt for persistence before you rotate, revoke rather than rotate, and verify the old credentials are actually dead. Then fix what made the blast radius so big in the first place: pipelines holding far more privilege than the jobs they run ever needed.
Frequently Asked Questions
Which LiteLLM versions were compromised?
Versions 1.82.7 and 1.82.8, published to PyPI at 10:39 UTC on March 24, 2026 and quarantined roughly 40 minutes later. The project advises treating any LiteLLM install from that day before 16:00 UTC as suspect, and internal package mirrors may have cached the bad releases well past that window.
My company is not on the victim list. Are we safe?
Not necessarily. Researchers could only attribute dumps that contained identifying markers like domains or committer emails, and a big share of the archive is generic pipeline data with no attribution at all. If your systems ran the compromised versions, assume your secrets are in the dataset and act on it.
We rotated our credentials in March. Is that enough?
Only if the old credentials were fully revoked and you’ve verified they no longer work. One major tech company believed it had rotated everything, and a researcher found nearly all of its leaked credentials still worked months later. Test the old secrets, then audit logs for any use of them after March 24, 2026.
We never import LiteLLM directly. Does this still affect us?
Possibly. LiteLLM shows up as a transitive dependency in a lot of AI stacks, and the malicious code ran through a .pth startup hook whenever any Python interpreter started on an infected machine, with no import required. Audit dependency trees and installed packages, not just your direct requirements files.