Die beiden manipulierten Versionen unterscheiden sich im Auslieferungsweg der Schadlast. In Version 1.82.7 ist der Schadcode in die Datei “litellm/proxy/proxy_server.py” eingebettet; die Injektion erfolgte laut Endor Labs während oder nach dem Wheel-Build. Der Code ist so angelegt, dass er beim Import des Moduls ausgeführt wird – jeder Prozess, der “litellm.proxy.proxy_server” importiert, löst die Schadlast ohne weitere Nutzerinteraktion aus.
Version 1.82.8 erweitert den Angriff um einen aggressiveren Vektor: Eine bösartige Datei “litellm_init.pth” im Wurzelverzeichnis des Wheels sorgt dafür, dass die Logik bei jedem Start eines Python-Prozesses in der Umgebung ausgeführt wird – nicht nur beim Import von litellm. “Python-.pth-Dateien im Verzeichnis site-packages werden beim Start des Interpreters automatisch von site.py verarbeitet”, erklärt Endor Labs. Die Datei enthalte eine einzelne Zeile, die ein Subprozess-Modul importiere und einen abgekoppelten Python-Prozess starte, um dieselbe Base64-Schadlast zu dekodieren und auszuführen. Über subprocess.Popen läuft die Schadlast dabei im Hintergrund.
Nach der Dekodierung entpackt ein Orchestrator einen Credential-Harvester und einen Persistenz-Dropper. Der Harvester nutzt – sofern vorhanden – das Kubernetes-Service-Account-Token, um alle Knoten im Cluster aufzuzählen und auf jedem einen privilegierten Pod auszurollen. Dieser wechselt per chroot in das Dateisystem des Hosts und installiert den Dropper als systemd-Benutzerdienst auf jedem Knoten.
Der systemd-Dienst startet ein Python-Skript unter “~/.config/sysmon/sysmon.py” – derselbe Name wie bei der Trivy-Kompromittierung – das alle 50 Minuten “checkmarx[.]zone/raw” kontaktiert, um eine URL für die nächste Stufe abzurufen. Enthält die URL “youtube[.]com”, bricht das Skript ab. Dieses Kill-Switch-Muster fand sich laut Endor Labs in allen bislang beobachteten Vorfällen.
“Diese Kampagne ist mit hoher Wahrscheinlichkeit nicht vorbei”, so Endor Labs. TeamPCP zeige ein durchgängiges Muster: Jede kompromittierte Umgebung liefere Zugangsdaten, die das nächste Ziel öffneten. Der Schwenk von CI/CD – GitHub-Actions-Runnern – hin zur Produktion – PyPI-Pakete in Kubernetes-Clustern – sei eine bewusste Eskalation. Insgesamt erstreckt sich die Angriffskampagne mittlerweile über fünf Ökosysteme: GitHub Actions, Docker Hub, npm, Open VSX und PyPI.
Laut Socket bekennt sich TeamPCP inzwischen offen zu mehreren Folgeangriffen über verschiedene Ökosysteme hinweg; es handle sich um eine andauernde Operation gegen hochwirksame Punkte der Software-Lieferkette. In einer Nachricht auf ihrem Telegram-Kanal höhnte die Gruppe, diese Unternehmen seien gebaut worden, um Lieferketten zu schützen, könnten aber nicht einmal ihre eigenen sichern; man werde noch lange aktiv bleiben und gemeinsam mit neuen Partnern Terabytes an Geschäftsgeheimnissen stehlen. Weitere beliebte Sicherheitstools und Open-Source-Projekte würden in den kommenden Monaten ins Visier geraten.
Gal Nagli, Leiter Threat Exposure beim zu Google gehörenden Anbieter Wiz, kommentierte auf X: “Die Open-Source-Lieferkette kollabiert in sich selbst.” Trivy werde kompromittiert, dann LiteLLM, Zugangsdaten aus Zehntausenden Umgebungen landeten bei den Angreifern – und führten zur nächsten Kompromittierung: “Wir stecken in einer Schleife fest.”
