Den Erkenntnissen der Forscher zufolge übernahmen die Angreifer Trivys GitHub-Build-Prozess. In den GitHub Actions tauschten sie die Datei entrypoint.sh gegen eine bösartige Variante aus und veröffentlichten im Release v0.69.4 trojanisierte Binärdateien. Beide fungierten als Infostealer – sowohl im eigentlichen Scanner als auch in zugehörigen GitHub Actions wie trivy-action und setup-trivy. Möglich wurde die Veröffentlichung der Schad-Releases durch kompromittierte Zugangsdaten mit Schreibrechten auf das Repository. Diese stammten aus einem früheren Einbruch im März, bei dem Daten aus Trivys Umgebung abgeflossen waren und der nicht vollständig eingedämmt wurde. Im Repository aquasecurity/trivy-action setzten die Angreifer 75 von 76 Tags per Force-Push auf bösartige Commits um. Externe Workflows, die einen der betroffenen Tags nutzten, führten dadurch automatisch den Schadcode aus, noch bevor der eigentliche Trivy-Scan lief – was die Kompromittierung schwer erkennbar machte. Laut Socket sammelte der Infostealer zunächst Aufklärungsdaten und durchsuchte die Systeme nach Dateien und Orten, an denen typischerweise Zugangsdaten und Authentifizierungsgeheimnisse abgelegt werden. Zusätzlich durchforstete das Schadskript Speicherbereiche des Prozesses GitHub Actions Runner.Worker nach einer bestimmten JSON-Zeichenkette, um weitere Geheimnisse aufzuspüren. Auf Entwicklerrechnern erfasste die trojanisierte Trivy-Binärdatei auf ähnliche Weise Umgebungsvariablen, durchsuchte lokale Dateien nach Zugangsdaten und las die Netzwerkschnittstellen aus. Die gesammelten Daten verschlüsselte die Malware und legte sie in einem Archiv namens tpcp.tar.gz ab, das anschließend an einen per Typosquatting getarnten Steuerungsserver unter scan.aquasecurtiy[.]org abfloss. Schlug die Übertragung fehl, legte die Schadsoftware im GitHub-Konto des Opfers ein öffentliches Repository namens tpcp-docs an und lud die Daten dort hoch. Für dauerhaften Zugriff platzierte sie zudem ein Python-Skript unter ~/.config/systemd/user/sysmon.py und registrierte es als systemd-Dienst, der bei einem entfernten Server regelmäßig nach weiteren Schadmodulen anfragt. Die Zuordnung zu TeamPCP stützt sich darauf, dass einer der eingesetzten Infostealer in der letzten Zeile seines Python-Skripts den Kommentar „TeamPCP Cloud stealer" trägt. Socket beschreibt die Gruppe – auch unter den Namen DeadCatx3, PCPcat und ShellForce geführt – als dokumentierten, auf Cloud-Umgebungen spezialisierten Akteur, der falsch konfigurierte Docker-APIs, Kubernetes-Cluster, Ray-Dashboards und Redis-Server ausnutzt. Aqua Security erklärte, ein Angreifer habe kompromittierte Zugangsdaten aus dem nicht ordnungsgemäß eingedämmten früheren Vorfall verwendet. Es handle sich um eine Fortsetzung des Vorfalls vom 1. März 2026, bei dem Zugangsdaten abgeflossen seien; die Eindämmung sei unvollständig gewesen. Man habe zwar Geheimnisse und Token rotiert, doch sei der Vorgang nicht atomar abgelaufen, sodass die Angreifer womöglich Kenntnis von den erneuerten Token erlangt hätten. Das bösartige Release v0.69.4 war rund drei Stunden verfügbar, die kompromittierten GitHub-Actions-Tags bis zu zwölf Stunden. Die Angreifer manipulierten zudem das Projekt-Repository und löschten Aqua Securitys ursprüngliche Veröffentlichung zum früheren März-Vorfall. Organisationen, die während des Vorfalls betroffene Versionen einsetzten, sollten ihre Umgebungen als vollständig kompromittiert behandeln, sämtliche Geheimnisse wie Cloud-Zugangsdaten, SSH-Schlüssel, API-Token und Datenbankpasswörter rotieren und ihre Systeme auf weitere Anzeichen einer Kompromittierung untersuchen. Forscher von Aikido bringen denselben Akteur mit einer Folgekampagne in Verbindung: einem neuen, sich selbst verbreitenden Wurm namens „CanisterWorm", der npm-Pakete ins Visier nimmt. Der Wurm kompromittiert Pakete, installiert über einen systemd-Nutzerdienst eine dauerhafte Hintertür und veröffentlicht mit gestohlenen npm-Token bösartige Updates für weitere Pakete. Laut Aikido nimmt das Skript deploy.js npm-Token, ermittelt die zugehörigen Nutzernamen, listet alle veröffentlichbaren Pakete auf, hebt deren Patch-Versionen an und verteilt die Schadlast über den gesamten Geltungsbereich – 28 Pakete in unter 60 Sekunden. Zur Steuerung nutzt die Malware ein dezentrales Verfahren über sogenannte Internet-Computer-Canisters (ICP), die als Vermittler URLs für weitere Schadmodule bereitstellen. Dieser Ansatz erschwert eine Abschaltung erheblich, da nur der Betreiber des Canisters ihn entfernen kann und jeder Eingriff einen Governance-Antrag samt Netzwerkabstimmung erfordern würde. Der Wurm sammelt überdies npm-Authentifizierungstoken aus Konfigurationsdateien und Umgebungsvariablen ein, um sich über Entwicklerumgebungen und CI/CD-Pipelines auszubreiten. Zum Zeitpunkt der Analyse war ein Teil der nachgelagerten Infrastruktur inaktiv oder mit harmlosen Inhalten bestückt – was sich den Forschern zufolge jederzeit ändern kann.
Lieferkettenangriff auf Trivy: Infostealer über manipulierte Releases und GitHub Actions verteilt

Der weit verbreitete Sicherheitsscanner Trivy ist Ziel eines Lieferkettenangriffs geworden. Angreifer, die unter dem Namen TeamPCP auftreten, schleusten über offizielle Releases und GitHub Actions Schadsoftware ein, die Zugangsdaten ausspäht. Trivy spürt Schwachstellen, Fehlkonfigurationen und offengelegte Geheimnisse in Containern, Kubernetes-Umgebungen, Code-Repositories und Cloud-Infrastrukturen auf. Gerade weil Entwickler- und Sicherheitsteams das Werkzeug routinemäßig einsetzen, ist es für Angreifer ein lohnendes Ziel, um an sensible Authentifizierungsgeheimnisse zu gelangen. Öffentlich gemacht wurde der Vorfall zuerst vom Sicherheitsforscher Paul McCarty, der vor einer mit einer Hintertür versehenen Trivy-Version 0.69.4 warnte; an Nutzer waren manipulierte Container-Images und GitHub-Releases ausgeliefert worden. Spätere Analysen von Socket und anschließend von Wiz ergaben, dass der Angriff mehrere GitHub Actions betraf und nahezu alle Versions-Tags des Repositories trivy-action kompromittierte. Aqua Security bestätigte den Vorfall und führte ihn auf kompromittierte Zugangsdaten aus einem früheren, nicht vollständig eingedämmten Vorfall zurück.