PyPI-Supply-Chain-Angriffe: Die LiteLLM- und Telnyx-Fälle mit praktischen Empfehlungen
Angreifer kompromittierten die Pakete litellm und telnyx, indem sie ein API-Token aus der Trivy-Abhängigkeit entwendeten. Am 19. März 2026 wurden bösartige Versionen veröffentlicht: litellm 1.82.7 und 1.82.8, telnyx 4.87.0 und 4.87.2. Der Code wird beim Import der Module aktiviert, durchsucht die Umgebung nach Geheimnissen und exfiltriert Daten an entfernte Server.
Die schädliche Nutzlast in litellm sammelt SSH-Schlüssel, Git-/Docker-Zugangsdaten, .env-Dateien, K8s-Tokens, Datenbankpasswörter, LDAP-Konfigurationen, Shell-Verlauf und Kryptoschlüssel. Sie versucht, Cloud-Tokens von Metadaten-Servern und AWS Secrets Manager zu extrahieren. Daten werden an models.litellm.cloud gesendet. Für Persistenz erstellt sie einen SystemD-Dienst namens "System Telemetry Service" oder einen K8s-Pod, der Anweisungen von checkmarx.zone lädt.
In telnyx lädt der schädliche Code in _client.py Stufen von WAV-Dateien, die auf 8.42.209.203 gehostet werden. Unter Windows platziert er msbuild.exe im Startup-Ordner für automatischen Start; auf anderen Betriebssystemen verwendet er ein Python-Skript. Version 4.87.1 enthielt einen Tippfehler, der die Ausführung blockierte. Die Kommunikation ist über einen Verschlüsselungsschlüssel mit TeamPCP verknüpft.
Entwickler reagierten, indem sie Tokens rotierten, Releases entfernten und vertrauenswürdige Herausgeber auf PyPI implementierten.
Merkmale von Angriffen auf beliebte OSS-Pakete
Im Gegensatz zu typischen PyPI-Angriffen (wie Typosquatting oder neuen Paketen) wurde hier schädlicher Code in bestehende Projekte mit hohem Traffic injiziert. Die Kette: Kompromittierung von Repositories → Diebstahl von PyPI-/GitHub-Tokens → Veröffentlichung von Malware → Sammeln von Zugangsdaten von Entwicklungsmaschinen → wiederholte Kompromittierungen.
LiteLLM wurde während des Angriffs über 119.000 Mal heruntergeladen. ~40-50 % der Installationen erfolgten ohne Versionsangabe (latest), ~1700 Installationen/Minute. PyPI-Reaktionszeiten:
- LiteLLM: Von Veröffentlichung bis Quarantäne — 2 Stunden 32 Minuten (13 Benutzerberichte).
- Telnyx: 3 Stunden 42 Minuten (automatische Quarantäne durch vertrauenswürdige Benutzer).
PyPI-Maßnahmen gegen Malware
Täglich werden etwa 700-800 neue Projekte hinzugefügt. PyPI verlässt sich auf die Community für Scans und Meldungen über "Als bösartig melden". Diese Funktion, eingeführt 2024, beschleunigt die Quarantäne. Vertrauenswürdige Herausgeber ermöglichen automatisierte Reaktionen.
Empfehlungen: Abkühlphase für Abhängigkeiten
Das Verzögern der Installation neuer Releases verschafft Zeit für Malware-Erkennung. Format: RFC 3339 (P3D = 3 Tage).
- uv: global in ~/.config/uv/uv.toml oder pyproject.toml:
[tool.uv]
exclude-newer = "P3D"
- pip v26.1+: in pip.conf:
[install]
uploaded-prior-to = P3D
- pip 26.0 (absolutes Datum):
python -m pip install --uploaded-prior-to=$(date -d '-3days' -Idate) package
Workaround für Sicherheitspatches: --uploaded-prior-to=P0D oder Dependabot/Renovate (die Verzögerungen ignorieren).
Sperren von Abhängigkeiten für Reproduzierbarkeit
Lock-Dateien mit Hashes verhindern Code-Substitution während der Neuinstallation.
| Tool | Befehl | Format |
|------------|---------|--------|
| uv | uv lock | uv.lock |
| pip-tools | pip-compile --generate-hashes | requirements.txt |
| pipenv | pipenv lock | Pipfile.lock |
pip freeze ist unzureichend — fehlende Hashes. pip lock (pylock.toml) wird erwartet.
Schutz von OSS-Projekten
- Implementieren Sie vertrauenswürdige Herausgeber auf PyPI.
- Verwenden Sie 2FA + Hardware-Schlüssel für PyPI/GitHub.
- Beschränken Sie Token-Berechtigungen (Scopes).
- Überwachen Sie Veröffentlichungen via Webhooks.
- Scannen Sie Repositories mit Trivy/Grype.
Für Entwicklungsmaschinen:
- Isolieren Sie kompromittierte Umgebungen.
- Rotieren Sie alle Zugangsdaten.
- Prüfen Sie auf Persistenz (SystemD, K8s-Pods, Startup).
- Analysieren Sie Traffic/Logs.
Wichtige Erkenntnisse
- Angriffe nutzen echte OSS-Pakete; überprüfen Sie neue Releases.
- Eine P3D-Abkühlphase + Lock-Dateien = grundlegender Schutz.
- Über 119.000 LiteLLM-Installationen vor Quarantäne; latest ist riskant.
- Exfiltration umfasst Cloud-Metadaten und Secrets Manager.
- Vertrauenswürdige Herausgeber und Community beschleunigen PyPI-Reaktion.
— Editorial Team
Noch keine Kommentare.