Pypi Supply Chain Compromise Indicators And Execution Mechanism
Sources: 1 • Confidence: High • Updated: 2026-03-27 10:08
Key takeaways
- Inspection of the litellm==1.82.8 wheel found a file named litellm_init.pth with size 34628 bytes.
- McMahon used Claude conversation transcripts to confirm the vulnerability and decide on response actions.
- Callum McMahon reported the LiteLLM malware attack to PyPI.
- The beginning of litellm_init.pth contains code that spawns a Python subprocess to base64-decode and execute embedded payload content.
- The malicious package version litellm==1.82.8 was live on PyPI at the time described in the document.
Sections
Pypi Supply Chain Compromise Indicators And Execution Mechanism
- Inspection of the litellm==1.82.8 wheel found a file named litellm_init.pth with size 34628 bytes.
- The beginning of litellm_init.pth contains code that spawns a Python subprocess to base64-decode and execute embedded payload content.
- The malicious package version litellm==1.82.8 was live on PyPI at the time described in the document.
- A fresh download from PyPI was tested in an isolated Docker container to confirm the compromise.
Llm Assisted Incident Response Workflow And Artifacts
- McMahon used Claude conversation transcripts to confirm the vulnerability and decide on response actions.
- After confirming malicious code in an isolated Docker container, Claude suggested using the PyPI security contact address.
- McMahon used the claude-code-transcripts tool to publish the transcript of the conversation.
Reporting Path And Expected User Impact
- Callum McMahon reported the LiteLLM malware attack to PyPI.
- The document states that anyone installing or upgrading litellm while the malicious 1.82.8 release is live is expected to be infected.
- The document recommends reporting the incident immediately to security@pypi.org.
Unknowns
- Was litellm==1.82.8 removed or yanked from PyPI, and if so, when relative to the report?
- What is the full behavior of the embedded payload beyond the base64 decode/execute mechanism (e.g., network activity, credential access, persistence, lateral movement)?
- Under what exact conditions does the .pth-based code execute during installation or runtime in typical environments, and was execution directly observed during the sandbox test?
- How did the malicious artifact enter the PyPI distribution channel (account compromise, compromised build pipeline, malicious maintainer action, or dependency confusion)?
- What is the authoritative list of compromised versions/files and their cryptographic hashes, if any, as published by PyPI or maintainers?