Die kompromittierte LiteLLM-Version 1.107.0 ist kein gewöhnlicher Fall eines fehlerhaften Open-Source-Pakets. Sie zeigt, wie sich ein Risiko entlang einer Release-Kette ausweiten kann: von einem offengelegten, nicht widerrufenen Secret über privilegierte Plattformzugänge und missbrauchte CI-Workflows bis zur Verteilung manipulierter Python-Wheels und Container-Images. Für Organisationen mit LLM-Gateways, Agenten oder anderen KI-Komponenten liegt die zentrale Lehre deshalb nicht allein in einer besseren Paketinventarisierung. Sie müssen die Vertrauensgrenzen ihrer Release-Identitäten, Secrets, Build-Umgebungen und Artefaktquellen beherrschen.
Nicht der Quellcode, sondern die Freigabekette war kompromittiert
LiteLLM bezeichnet seinen Bericht vom 23. Oktober 2026 als kanonische Darstellung des Vorfalls und weist darauf hin, dass frühere Annahmen aus einem Incident-Post während der Untersuchung teilweise korrigiert wurden. Am 21. Oktober wurde die kompromittierte Version litellm==1.107.0 über PyPI und offizielle Container-Registries verteilt. Betroffen waren nach Angaben von LiteLLM alle sieben PyPI-Wheels, die zwischen 11:39:51 und 13:23 UTC verfügbar waren, sowie mehrere Docker- und GHCR-Tags, einschließlich v1.107.0 und veränderlicher Tags wie latest.
Der wesentliche Befund: Der offizielle GitHub-Tag v1.107.0 enthielt die schädlichen Dateien nicht. Die kompromittierten Artefakte wurden laut Rekonstruktion aus einem vom Angreifer kontrollierten Lookalike-Repository gebaut. Ein Quellcode-Review des Tags hätte daher nicht belegt, dass die tatsächlich bezogenen Wheels oder Images diesem Code entsprachen. Genau hier unterscheidet sich die Bestandsfrage einer SBOM von der Vertrauensfrage: Eine SBOM kann Komponenten zuordnen und bei der Ermittlung helfen, sie beweist aber nicht automatisch Herkunft und Integrität eines konkret ausgelieferten Artefakts.
Rekonstruierte Angriffskette: Secret, Owner-Token, Workflow-Missbrauch
Nach der technischen Rekonstruktion von LiteLLM war am 27. Mai 2026 ein administrativer Schlüssel versehentlich in ein öffentliches Repository eingecheckt worden. Obwohl er später aus dem Arbeitsstand entfernt wurde, blieb er in der Git-Historie erreichbar und wurde nicht widerrufen. Dieser Schlüssel ermöglichte später Zugriff auf eine interne Agent-Plattform. Dort wurde ein GitHub-Owner-Token extrahiert.
Mit dieser privilegierten Identität führten die Angreifer nach LiteLLM temporäre CI-Workflows aus, um Repository-Secrets an einen angreiferkontrollierten Endpunkt zu übermitteln. Die erlangten Maintainer-Tokens dienten unter anderem dazu, das Produktions-Gate freizugeben und Aufzeichnungen von Release-Runs zu löschen. Der Vorfall macht sichtbar, dass ein Secret nach seiner Offenlegung nicht durch das Entfernen aus einem Repository bereinigt ist. Erst ein nachweislicher Widerruf beendet seine Verwendbarkeit.
Release-Identitäten sind deshalb als eigenständige hochkritische Assets zu behandeln. Organisations-Owner-Rechte, Freigabeidentitäten, CI-Runner-Berechtigungen, Registry-Publishing und Signaturidentitäten sollten nicht in einer einzelnen, breit berechtigten persönlichen OAuth- oder CLI-Identität zusammenfallen. Ebenso kritisch ist die Trennung zwischen Entwicklungs-, Build- und Produktionsfreigaben: Ein kompromittierter Workflow darf nicht automatisch zur Veröffentlichung in einer Produktiv-Registry führen.
Warum der Schaden über ein Dependency-Risiko hinausgehen kann
Microsoft identifizierte in den kompromittierten Wheels die Python-Startdateien cook.pth, cook.py und sitecustomize.py. Diese Dateien wurden bei der Installation in das Python-Library-Verzeichnis verschoben und konnten beim normalen Start eines betroffenen Python-Interpreters ausgeführt werden. Dafür musste eine Anwendung LiteLLM nicht importieren. Für die Incident-Bewertung ist das wesentlich: Schon das Starten eines möglicherweise betroffenen Interpreters zu Untersuchungszwecken kann die Ausführung des schädlichen Codes auslösen.
Der von Microsoft analysierte Credential Collector zielte auf erreichbare Authentifizierungs- und Konfigurationsdaten aus Entwicklerwerkzeugen, KI-Anwendungen, Cloud- und Workload-Umgebungen, Browsern, SSH- und GPG-Material sowie CI/CD- und Infrastrukturkonfigurationen. Auch Umgebungsvariablen standen im Fokus. Daraus folgt nicht, dass jeder Zielpfad tatsächlich gelesen wurde oder alle dort genannten Credentials abgeflossen sind. Für die Risikoanalyse genügt jedoch bereits, dass eine kompromittierte Komponente in einer Umgebung mit weitreichend erreichbaren Identitäten ausgeführt wurde.
Bei KI-Gateways und Agenten ist diese Reichweite besonders relevant. Solche Komponenten können Modellanbieter-Schlüssel, Cloud-Identitäten, Datenbankzugänge, Proxy-Konfigurationen oder Entwickler- und Agenten-Credentials erreichen. Der Third-Party-Risk-Prozess sollte deshalb nicht nur Popularität, Wartungsstatus und bekannte Schwachstellen einer Komponente bewerten, sondern auch deren tatsächlichen Zugriffsradius zur Laufzeit.
Release-Pipelines und Secrets gezielt absichern
Eine belastbare Absicherung beginnt mit klaren Kontrollzielen. Langfristige Publishing-Tokens und statische CI-Secrets sollten auf ein Minimum reduziert, zentral inventarisiert und auf Offenlegung, Nutzung sowie Rotation überwacht werden. Wo möglich, sind kurzlebige oder föderiert bezogene Identitäten gegenüber dauerhaft gespeicherten Tokens vorzuziehen. Secret-Scopes müssen so eng sein, dass ein Build-Job nur die Berechtigungen erhält, die er für seine definierte Aufgabe benötigt.
- Workflow-Schutz: Geschützte Branches, restriktive Trigger für Forks und neue Branches sowie überprüfbare Änderungen an Workflow-Definitionen reduzieren Manipulationsmöglichkeiten.
- Getrennte Freigaben: Production-Approvals sollten nachvollziehbar, von Entwicklungsrechten getrennt und nicht pauschal durch Owner-Rechte umgehbar sein.
- Runner-Isolation: Build-Runner benötigen eine möglichst isolierte Ausführung und minimale Job-Token-Berechtigungen.
- Vollständige Auditierbarkeit: Workflow-Änderungen, Run-Ausführungen, Freigaben, Registry-Pushes und auch gelöschte Runs müssen in die Untersuchung einbezogen werden können.
- Registry-Kontrolle: Publishing-Rechte und Signaturidentitäten sind getrennt zu verwalten; eine CI-Kompromittierung darf nicht automatisch sämtliche Veröffentlichungsrechte eröffnen.
Diese Kontrollen schützen nicht nur die Pipeline selbst. Sie schaffen auch belastbare Nachweise dafür, welche Identität unter welchen Bedingungen ein Artefakt veröffentlicht hat.
Pinning, Digests, Signaturen und Provenance zusammenführen
Dependency Pinning begrenzt ungewollte Versionswechsel, schützt aber nicht vor einem kompromittierten Artefakt unter einer explizit angeforderten Versionsnummer. Ebenso sind Container-Tags wie latest, main-latest oder main-stable kein belastbarer Identitätsnachweis, weil sie auf ein anderes Image zeigen können. Produktive Deployments sollten daher auf freigegebene, unveränderliche Image-Digests referenzieren.
Darüber hinaus sollte ein Freigabeprozess Hash, Signatur und Provenance gegen erwartete Parameter prüfen: zugelassene Quellorganisation, erwarteter Commit, definierte Build-Identität und festgelegte Pipeline. NIST SSDF empfiehlt, Release-Dateien, Integritätsinformationen und Provenance-Daten geschützt zu archivieren sowie Provenance für alle Komponenten einer Freigabe zu erfassen und zu teilen. SLSA-Provenance beschreibt, wo, wann und wie ein Artefakt gebaut wurde; Verbraucher können es damit gegen erwartete Quell- und Build-Parameter prüfen.
Die wirksame Kombination lautet somit: Lockfiles und Pinning für reproduzierbare Abhängigkeiten, Digests für die unveränderliche Referenz, Signaturen für die Zuordnung zu einer Identität und Provenance für den überprüfbaren Entstehungsweg. Keine dieser Maßnahmen ersetzt die anderen vollständig.
Incident-Response bei bereits verteilten Artefakten
Bei einem Verdacht auf eine kompromittierte Python-Abhängigkeit gilt zunächst eine operative Sicherheitsregel: Betroffene Python-Umgebungen nicht für die Untersuchung starten. Die Bestandsaufnahme sollte aus einer vertrauenswürdigen Umgebung erfolgen und Installationen, virtuelle Umgebungen, Pip- und uv-Caches, interne Mirrors, Lockfiles, Build-Ausgaben, Container-Layer, Build-Runner, Entwicklergeräte und laufende Pods erfassen.
- Betroffene Wheels und Images anhand von Versionen, Hashes und Digests identifizieren; Pull-, Installations- und Ausführungszeitpunkte dokumentieren.
- Potenzielle Ausführung eindämmen und keine möglicherweise belasteten Interpreter starten.
- Artefakte und Umgebungen aus vertrauenswürdigen Quellen neu bauen, statt lediglich Pakete zu entfernen oder Tags umzustellen.
- Für die kompromittierte Identität erreichbare Credentials und Sessions rotieren oder widerrufen.
- CI-, Registry-, IAM-, Cloud-, Prozess- und Netzwerktelemetrie zusammenführen, um Nutzung und möglichen Credential-Missbrauch zu bewerten.
Das Entfernen eines Artefakts beendet weder eine bereits laufende Ausführung noch die mögliche Nutzung abgegriffener Zugangsdaten. Für eine belastbare Nachweisführung sind insbesondere Paket- und Image-Digests, Lockfiles, Workflow-Definitionen samt Änderungsverlauf, Secrets-Inventar, Token-Nutzungsdaten sowie Audit-Logs erforderlich.
Regulatorische Einordnung ohne pauschale Meldepflicht
Für Organisationen, die als wichtige oder besonders wichtige Einrichtungen in den Anwendungsbereich fallen, ist § 30 BSIG geltendes Recht. Die Vorschrift nennt unter anderem Lieferkettensicherheit, Sicherheit bei Erwerb, Entwicklung und Wartung einschließlich Schwachstellenmanagement, Zugriffskontrolle sowie Multi-Faktor- oder kontinuierliche Authentifizierung. Ob eine Organisation erfasst ist, muss anhand der gesetzlichen Kriterien gesondert geprüft werden. Release-Pipeline- und Abhängigkeitsrisiken lassen sich in diesem Rahmen in das dokumentierte Risikomanagement einordnen.
Der Cyber Resilience Act ist ebenfalls geltendes EU-Recht. Seine allgemeinen Hauptpflichten gelten ab dem 11. Dezember 2027; die Meldepflichten nach Artikel 14 für Hersteller aktiv ausgenutzter Schwachstellen und schwerwiegender Sicherheitsvorfälle gelten seit dem 11. September 2026. Für Open-Source-Software-Stewards gelten die spezifischen Meldepflichten nach Artikel 24 Absatz 3 ab dem 11. Dezember 2027. Daraus folgt nicht automatisch, dass der LiteLLM-Vorfall selbst meldepflichtig war: Entscheidend sind Rolle und rechtliche Einordnung im jeweiligen Einzelfall.
Quellen und weiterführende Informationen
- LiteLLM: The attack chain behind the v1.107.0 LiteLLM release
- Microsoft Security Blog: Analyse der Credential-Diebstahlmechanismen
- NIST SP 800-218: Secure Software Development Framework
- SLSA Framework: Build Provenance
- § 30 BSIG: Risikomanagementmaßnahmen
- Verordnung (EU) 2024/2847: Cyber Resilience Act