Die Lieferkettenkampagne der Gruppe TeamPCP hat mit dem Telnyx-Python-SDK ein weiteres prominentes Open-Source-Projekt erreicht. Am Freitag landeten die manipulierten Versionen 4.87.1 und 4.87.2 in der PyPI-Registry, abgestimmt auf Windows, macOS und Linux. Telnyx ist eine cloudbasierte Sprachlösung für Telefonate über respond.io; die Bibliothek wird monatlich mehr als 670.000 Mal heruntergeladen.

Der Schadcode steckte in einer WAV-Datei. Auf Windows-Systemen legt sie eine ausführbare Datei im Autostart-Ordner ab; auf macOS und Linux führt sie ein fest einprogrammiertes Python-Skript aus, das ein Collector-Skript der dritten Stufe dekodiert, um den Sitzungsschlüssel des Rechners auszuleiten.

Die Sicherheitsfirma Aikido beschreibt die Tarnung im Detail: Die WAV-Datei sei eine gültige Audiodatei und bestehe MIME-Typ-Prüfungen, doch die Audio-Frames enthielten eine base64-kodierte Schadlast. Dekodiere man die Frames, nutze die ersten acht Bytes als XOR-Schlüssel und wende XOR auf den Rest an, erhalte man die ausführbare Datei beziehungsweise das Python-Skript.

Nach Angaben von JFrog werden alle ausgeleiteten Daten mit asymmetrischer Verschlüsselung (RSA) geschützt. Der kodierte öffentliche Schlüssel sei derselbe wie bei früheren TeamPCP-Angriffen, etwa der Kompromittierung des LiteLLM-PyPI-Pakets. Wie die Bibliothek kompromittiert wurde, ist laut JFrog bislang unklar, dürfte aber eine direkte Folge der jüngsten TeamPCP-Angriffe auf die Open-Source-Ökosysteme sein.

Die Kampagne begann am 19. März mit dem Open-Source-Schwachstellenscanner Trivy von Aqua Security und setzte sich über NPM, Docker Hub, Kubernetes, OpenVSX und das LiteLLM-PyPI-Paket fort. Telnyx-Nutzer, die eine der beiden schädlichen SDK-Versionen installiert haben, sollten ihre Maschinen als kompromittiert betrachten und sämtliche Zugangsdaten, API-Schlüssel, SSH-Schlüssel und weitere Geheimnisse austauschen.

Nach Einschätzung von GitGuardian reicht die Wirkung der Kampagne deutlich über die öffentlich diskutierten Pakete hinaus. Das Unternehmen identifizierte über 470 Repositories, die eine manipulierte Version der Trivy-GitHub-Action ausführen, sowie mehr als 1.900 Pakete, die LiteLLM als Abhängigkeit einbinden und so die ursprüngliche Infektion weitertragen könnten. GitGuardian betont, dass es sich dabei um Untergrenzen handele, da die Analyse nur auf öffentlich zugänglichen Daten beruhe. Bezieht man private Repositories und transitive Abhängigkeiten ein, falle der tatsächliche Umfang der Kampagne erheblich größer aus.